我对此并不陌生,只是想问一个有关删除对象的快速问题。

我有一个名为MyClass1的对象,并且从中有许多其他类,例如MyClassA,MyClassB等。

现在我应该在MyClass1中这样做:

MyClass1::~MyClass1()
{

delete MyClassA;
delete MyClassB;

}


还是在删除MyClass1时会自动删除在MyClass1中创建的所有内容?

另外,如果我在MyClassA和MyClassB中创建了更多对象,是否也必须在各自的类中手动删除这些对象?

谢谢

最佳答案

如果您提出这个问题,那么您只是在学习C ++,所以最好的建议是-都不是。您应该了解这些内容(动态分配和内存管理-有关此信息,请参见Guillaume的答案),但是您真正应该做的是使用RAII(使用Google谷歌搜索)。正确的C ++方式是:

struct  MyClass1
{
  MyClassA mA;
  std::shared_ptr<MyClassB> mB;

  MyClass1() : mB(new MyClassB)
  {

  }
};


看到?没有更多的析构函数,这意味着您也不需要复制构造函数或复制赋值运算符(这是Guillaume的答案有缺陷的地方-它缺少最后两个)。

关于c++ - 删除 object ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14114123/

10-13 03:37