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

C++ destructor for object containing object containing pointer

本文关键字:对象 析构函数 指针 包含包 C++      更新时间:2023-10-16

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

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

class Foo
{
    string bar;
};
Foo* foo = new Foo;
delete foo;

我是否必须执行哪些操作来确保字符串中的基础char[]被解除分配?

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

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

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

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

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