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

时间:2012-10-06 20:29:37

标签: c++ destructor

我可以对析构函数进行一些澄清。

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

class Foo
{
    string bar;
};

Foo* foo = new Foo;
delete foo;

我必须做些什么才能确保字符串中的基础char[]被解除分配?

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

当你的课程遭到破坏时,其所有成员 - 包括string - 也会被自动销毁。

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

您可以查看以下规则。必须通过在析构函数中调用delete来破坏您使用new创建(并保留所有权)的任何对象。