我是新手,只是想问一个关于删除对象的快速问题。
我有一个名为 MyClass1 的对象,从它我有许多其他类,MyClassA、MyClassB 等。
现在我应该在 MyClass1 中这样做吗:
MyClass1::~MyClass1()
{
delete MyClassA;
delete MyClassB;
}
或者当我删除 MyClass1 时,在 MyClass1 中创建的所有内容都会自动删除吗?
此外,如果我在 MyClassA 和 MyClassB 中创建了更多对象,是否也必须在各自的类中手动删除这些对象?
谢谢
最佳答案
如果您问这个问题,那么您只是在学习 C++,所以最好的建议是——两者都不是。您应该了解这些东西(动态分配和内存管理 - 请参阅 Guillaume 对此的回答),但您真正应该做的是使用RAII(google this)。正确的 C++ 方法是:
struct MyClass1
{
MyClassA mA;
std::shared_ptr<MyClassB> mB;
MyClass1() : mB(new MyClassB)
{
}
};
看到了吗?不再有析构函数,这意味着您也不需要复制构造函数或复制赋值运算符(这是 Guillaume 的答案有缺陷的地方 - 它缺少最后两个)。
关于c++ - 删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14114123/