我对此并不陌生,只是想问一个有关删除对象的快速问题。
我有一个名为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/