2012-10-06 54 views
1

我可以在析构函数上使用一些说明。包含含指针对象的对象的C++析构函数

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

class Foo 
{ 
    string bar; 
}; 

Foo* foo = new Foo; 
delete foo; 

有任何事物我必须做,以确保该字符串在基础char[]被释放?

+0

请问您可以修改类型为'Foo *'吗? Stackoverflow不会让我做1个字符的更正;) – filmor

回答

2

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

2

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

2

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

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

1

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