class test {
public:
test() {};
bool active;
};
int main()
{
test a;
cout << a.active << endl;
return 0;
}
以下代码始终打印204
。我测试了很多其他类型,并得到了一些非常奇怪的结果。 int打印-858993460
,双打-9.25596e+61
,列表继续。
为什么C ++不会抛出诸如uninitialized class member 'active' used
之类的错误而不是分配似乎是任意值的错误?
答案 0 :(得分:0)
C ++只是分配内存并调用构造函数。 您可以随意初始化所有成员。
在调试模式下编译时实际发生的事情是,编译器实际上会将不同的成员初始化为某些值,以帮助您理解它未初始化。
204是0xCC,这是默认的(microsoft?)调试器初始化值
这里有一个类似的问题和好的答案:What happens to a declared, uninitialized variable in C? Does it have a value?