为什么未初始化的类成员在C ++中具有任意值?

时间:2017-09-09 20:20:12

标签: c++

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之类的错误而不是分配似乎是任意值的错误?

1 个答案:

答案 0 :(得分:0)

C ++只是分配内存并调用构造函数。 您可以随意初始化所有成员。

在调试模式下编译时实际发生的事情是,编译器实际上会将不同的成员初始化为某些值,以帮助您理解它未初始化。

204是0xCC,这是默认的(microsoft?)调试器初始化值

这里有一个类似的问题和好的答案:What happens to a declared, uninitialized variable in C? Does it have a value?