【发布时间】:2010-10-15 05:27:18
【问题描述】:
我有一个class A,它为其一个字段使用堆内存分配。类 A 被实例化并存储为另一个类中的指针字段 (class B.
当我处理完 B 类的对象后,我调用 delete,我假设它调用了析构函数……但这是否也调用了 A 类的析构函数?
编辑:
从答案中,我认为(如果不正确,请编辑):
-
B 实例的
delete调用 B::~B(); - 调用
A::~A(); -
A::~A应该明确地deleteA 对象的所有堆分配成员变量; - 最后,存储 B 类实例的内存块返回到堆 - 当使用 new 时,它首先在堆上分配一块内存,然后调用构造函数对其进行初始化,现在之后已调用所有析构函数以完成对象,将对象所在的块返回到堆中。
【问题讨论】:
标签: c++ memory-management destructor delete-operator base-class