我可以在析构函数上使用一些说明。包含含指针对象的对象的C++析构函数
我知道如果一个对象包含一个指向已分配内存的指针,那么该对象的析构函数应该在该指针上调用delete
。但是,如果一个对象包含包含一个指向分配的内存对象,如string
:
class Foo
{
string bar;
};
Foo* foo = new Foo;
delete foo;
有任何事物我必须做,以确保该字符串在基础char[]
被释放?
我可以在析构函数上使用一些说明。包含含指针对象的对象的C++析构函数
我知道如果一个对象包含一个指向已分配内存的指针,那么该对象的析构函数应该在该指针上调用delete
。但是,如果一个对象包含包含一个指向分配的内存对象,如string
:
class Foo
{
string bar;
};
Foo* foo = new Foo;
delete foo;
有任何事物我必须做,以确保该字符串在基础char[]
被释放?
string
类型的析构函数负责清理它拥有的任何资源。你的对象的析构函数将调用成员对象的析构函数。
string
类的析构函数负责任何清理。你不必担心它。
当你的课程遭到破坏时,其所有成员(包括string
)也会自动销毁。
清理string
(其中char数组是其他类不应该依赖的实现细节)所拥有的任何内部资源是对象的析构函数的责任。
你可以看看下面的规则。您使用new创建(并保留所有权)的任何对象必须通过在析构函数中调用delete
来销毁。
请问您可以修改类型为'Foo *'吗? Stackoverflow不会让我做1个字符的更正;) – filmor