所以我有以下代码:
#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(禁用语言扩展)。
谢谢。
答案 0 :(得分:0)
两种情况都是未定义的行为。您的编译器只有足够智能才能检测到两种情况之一。