如果变量在全局域中定义,那么系统会保证给它提供初始值0;如果变量在局部域中定义或通过new表达式动态分配的,则系统不会提供初始值0。这戏对象被称为未初始化的(与他关联的内存区中含有一个随机的位串,可能是以前使用的结果)。下面举两个例子(见注释):1、 using namespace std;int a; //未初始化,系统自动初始化为0main()...{ int b; cout<<a<<"/n"<<b<<endl; //会出现运行期错误} 2、 #include <string>using namespace std;string as; //未初始化,系统自动初始化为0main()...{ string bs ; //未初始化,运行无误,应该调用默认构造函数。 cout<<as<<" "<<bs<<endl; //返回两个空串} 由此可以看出,对于有默认构造函数的类,在哪里定义都会默认调用构造函数初始化。使用未初始化的对象是错误的,因此建议对每个对象提供一个初始值。另外,初始化有两种形式: int a = 666; //显式初始化 int a(666); //隐式初始化 需要思考一些这两种形式调用类的那种操作符???