【发布时间】:2015-01-12 04:48:46
【问题描述】:
所以我有以下代码:
#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(禁用语言扩展)。
谢谢。
【问题讨论】:
-
如果在发布模式下编译,运行时错误是否仍然触发?复制错误的确切文本也会很有帮助。
-
Visual Studio 中的一些调试功能,只有在 debug 中编译时才能使用
-
你是对的。它不会在更多版本中发生。只有调试。非常感谢你们。我在想构造函数中有一些隐藏的东西。
标签: c++ initialization default-constructor member-variables