【发布时间】:2010-04-27 14:45:27
【问题描述】:
我们知道编译器会为用户定义的类生成一些成员函数,如果这些成员函数没有定义但被使用,不是吗。所以我有这样的代码:
class AA
{
};
void main()
{
AA a;
AA b(a);
a = b;
}
此代码运行良好。我的意思是没有编译器错误。但是下面的代码....
class AA
{
int member1;
int member2;
};
但是这段代码给出了一个运行时错误,因为变量“a”没有被初始化!!!
所以我的问题是:当我们实例化一个 int 时,它有一个值。那么为什么默认构造函数不起作用并使用这两个 int 数字初始化变量“a”??
编辑:平台:Win Vista,编译器:Visual Studio 2008 编译器;标志:默认
【问题讨论】:
-
第二次写:变量“a”没有被初始化!!!
-
可能在你的编译器集“/WX”(将警告视为错误)属性中?
-
@Narek 这不是运行时错误。
-
@Bil 您的编辑虽然毫无疑问是善意的,但会使现有答案无效。我已经回滚了。
-
@Neil Butterworth :这可以完美地解释为由尝试读取
int对象的陷阱表示引起的运行时错误。这实际上是 VS2008(以及 VS2005)试图用这个实现的。他们用“是否初始化标志”标记变量,并在有人试图读取未初始化的值时进行陷阱。
标签: c++ class constructor