C++规定,局部变量不被初始化,非局部变量会被初始化。
此规则对类依旧有效。
#include <iostream>
using namespace std;
int a;
class B{
public:
int c;
};
int main(){
//全局变量有初始值0
cout<<"a val:"<<a<<endl;
//局部变量没有,是堆栈中的残留值
B b;
cout<<"b val:"<<b.c<<endl;
//堆中的变量有初始值0
B *pb = new B;
cout <<"globel B val:"<<pb->c<<endl;
return 0;
}
输出:
# ./a.exe
a val:0
b val:1629650292
globel B val:0