包含指针的对象的C ++析构函数

C++ destructor for object containing object containing pointer

我可以用一些关于析构函数的解释。

我理解,如果一个对象包含一个指向已分配内存的指针,那么该对象的析构函数应该在该指针上调用delete。但是,如果一个对象包含一个指向已分配内存的指针的对象,比如string,该怎么办?:

1
2
3
4
5
6
7
class Foo
{
    string bar;
};

Foo* foo = new Foo;
delete foo;

是否有必要确保字符串中的EDCOX1的2位被释放?


string类型的析构函数负责清理它拥有的任何资源。对象的析构函数将调用成员对象的析构函数。


当类被销毁时,它的所有成员(包括string)也会自动销毁。

清除由string持有的任何内部资源(char数组是其他类不应依赖的实现细节)是string对象的析构函数的责任。


string类析构函数负责任何清理。你不必担心。


你可以按照下面的规则来看待这个规则。使用new创建(并保留所有权)的任何对象都必须通过在析构函数中调用delete来销毁。