C++包含包含指针的对象的对象析构函数
C++ destructor for object containing object containing pointer
我可以对析构函数进行一些澄清。
我知道如果一个对象包含指向已分配内存的指针,那么该对象的析构函数应该在该指针上调用delete
。但是,如果一个对象包含一个包含指向已分配内存的指针的对象,例如string
呢?
class Foo
{
string bar;
};
Foo* foo = new Foo;
delete foo;
我是否必须执行哪些操作来确保字符串中的基础char[]
被解除分配?
string
类型的析构函数负责清理它拥有的任何资源。对象的析构函数将调用成员对象的析构函数。
string
类析构函数负责任何清理。您不必担心。
当你的类被销毁时,它的所有成员(包括string
)也会被自动销毁。
清理 string
持有的任何内部资源(其中 char 数组是其他类不应依赖的实现细节)是 string
对象的析构函数的责任。
您可以按如下方式查看规则。使用 new 创建(并保留其所有权)的任何对象都必须通过在析构函数中调用 delete
来销毁。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 使用基类指针创建对象时,缺少派生类析构函数
- 对具有动态分配的内存和析构函数的类对象的引用
- C++析构函数调用两次,堆栈分配的复合对象
- 如何从 Gtk::窗口调用派生对象的析构函数
- 为什么数组中对象的析构函数在被另一个对象替换时不被调用?
- 为什么为未删除的对象调用析构函数?
- 对象的构造函数和析构函数
- 循环中本地对象的析构函数是否保证在下一次迭代之前被调用?
- C++使用函数对象的线程,如何调用多个析构函数而不是构造函数?
- 从未调用shared_ptr对象的析构函数
- 是否可以在其析构函数中使用指向已销毁对象的指针?
- 使用私有析构函数删除动态分配的对象
- C++ std::线程调用方法,从对象原因到调用此类的析构函数
- 为什么在这里调用析构函数,以及在调用该对象析构函数后如何调用对象成员函数?
- 对象析构函数在多线程处理时不断被调用,但该对象并未超出范围
- C++包含包含指针的对象的对象析构函数
- Objective-C++C++对象析构函数
- 结构对象析构函数
- 在Exit()时调用基本对象析构函数