如果B使用A类(c ++),如何定义B类的析构函数?

xia*_*ohl 1 c++

我上课了A. A有自己的析构函数.

我A用来定义B如下.

class A{
  protected:
    int* array;
  public:
    A(int size){array = new int[size];}
    ~A() { delete [] array;}

}

class B{
 public:
  A x;
}
Run Code Online (Sandbox Code Playgroud)

我该如何定义析构函数B?

提前致谢.

jua*_*nza 7

你不必在课堂上做任何特别的事情B.在这种情况下,编译器生成的析构函数将做正确的事情.

A另一方面,class 要么缺少赋值运算符,要么缺少复制构造函数,或者必须通过将它们设为私有来禁用它们.如果您复制或分配A实例,编译器生成的将导致问题(因此也是一个B实例.请参阅规则三.