定义没有初始化式的变量时,系统有时候会帮我们初始化变量。系统如何初始化取决于变量的类型以及变量定义的位置。内置类型变量是否自动初始化取决于变量定义的位置。函数体外定义的变量初始成0;函数体内定义的变量不进行自动初始化。除了用作赋值操作的左操作数,其他任何使用未初始化变量的行为都是未定义的,不要依赖未定义行为。以int类型为例,一段简单的测试代码:#include <iostream> using namespace std;int a;int main() { int b; cout << a << endl; cout << b << endl; return 0; } 在VS执行这段代码,输出变量a的值0,同时VS会报错:Run-Time Check Failure #3 — The variable "b" is being used without being initialized。 变量a被自动初始化为0;变量b未被自动初始化。 类类型变量在定义时,如果没有提供初始化式,则会自动调用默认构造函数进行初始化(不论变量在哪里定义)。如果某类型没有默认构造函数,则定义该类型对象时必须提供显示初始化式。一段简单的测试代码(默认构造函数由编译器自动生成):#include <iostream> using namespace std;class testA { public: void printf() const { cout << data << endl; } private: int data; };testA a;int main() { testA b;