打印出未初始化的成员变量。有和没有默认构造函数

时间:2015-01-12 04:48:47

标签: c++ initialization default-constructor member-variables

所以我有以下代码:

#include<iostream>
using namespace std;

class baseClass
{
public:
    int objID;

    /*baseClass()
    {}
    */
};


int main(int argc, char** argv)
{
    baseClass bcObj;
    cout << "bcObj.objID: " << bcObj.objID << endl;
    return 0;
}

现在,如果我尝试运行它,我会收到有关使用未初始化变量的运行时错误。 但是如果我添加一个默认构造函数(取消注释构造函数),它就可以正常工作。它仍打印出一个垃圾值,但它打印时没有运行时错误。

为什么会有这种差异?默认构造函数没有对objID做任何事情。 我正在使用visual studio 2013(禁用语言扩展)。

谢谢。

1 个答案:

答案 0 :(得分:0)

两种情况都是未定义的行为。您的编译器只有足够智能才能检测到两种情况之一。

相关问题