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

标签 c++

我有一个类 AA 有自己的析构函数。

我使用 A 定义 B 如下。

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

}

class B{
 public:
  A x;
}

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

提前致谢。

最佳答案

您不必对 B 类做任何特殊的事情。在这种情况下,编译器生成的析构函数将做正确的事情。

另一方面,

class A 要么缺少赋值运算符和复制构造函数,要么您必须通过将它们设为私有(private)来禁用它们。如果您复制或分配一个 A 实例(因此也是一个 B 实例),编译器生成的将导致问题。参见 the rule of three

关于c++ - 如果 B 使用类 A (c++),如何定义类 B 的析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15280179/

相关文章:

c++ - FFmpeg MSVC 编译卡住

c++ - 为日志记录重载 << 运算符的设计的潜在问题

C++ 计数和映射

c++将给定.dat文件中的字符串 vector 转换为 double vector

c++ - SQLite Visual Studio 链接器错误

c++ - 片段着色器是否处理来自顶点着色器的所有像素?

c++ - 程序退出后内存会释放给系统吗?

c++ - 如何用 C++ 编写通用转换函数?

c++ - 渲染多个对象时opengl闪烁

c++ - 使用 AES 解密时前 16 个字节损坏