假设我有这样的东西:
a = new A();
a->b = new B();
a->b->c = new C();
如果我调用:
delete(a)
它还会从内存中删除 b 和 c 吗?我如何确定它们都消失了?
这是我大学类里面出现的一个问题,由另一名学生提出。没有提供更多信息。我想那时没有确定的答案,因为我无法告诉您有关 A、B 或 C 析构函数的信息
最佳答案
使用
class A
{
std::shared_ptr<B> b;
}
你不需要 A 或 B 的析构函数。默认的就可以了。
关于c++ - 如何从 C++ 中的堆中删除完整的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44572323/