C++中类的默认成员函数问题(构造函数,析构函数,运算符=,复制构造函数)(默认ctor,dtor,copy ctor)

Nar*_*rek 1 c++ constructor class

我们知道编译器为用户定义的类生成一些成员函数,如果该成员函数未定义但未使用,则不是.所以我有这样的代码:

class AA
{
};

void main()
{
    AA a;
    AA b(a);
    a = b;
}
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常.我的意思是没有编译错误.但是以下代码....

class AA
{
    int member1;
    int member2;
};
Run Code Online (Sandbox Code Playgroud)

但是这段代码给出了一个运行时错误,因为变量"a"被使用而没有被软化!

所以我的问题是:当我们实例化一个int时,它有一个值.那么为什么默认的构造函数不起作用并且使用这两个int数字初始化变量"a"?

编辑:平台:Win Vista,编译器:Visual Studio 2008编译器; 标志:默认

小智 6

编译器合成的默认构造函数为具有构造函数的所有类成员调用默认构造函数.但是整数没有构造函数,因此没有初始化.但是,我发现很难相信这会导致运行时错误.

要初始化这些变量:

class AA {
  public:
     AA() : member1(0), member2(0) {}
  private:
    int member1;
    int member2;
};
Run Code Online (Sandbox Code Playgroud)