C++:删除动态分配的类时,是否也会删除不在堆上的私有成员?

C++: When deleting a dynamically allocated class, do private members that aren't on the heap get deleted as well?

本文关键字:删除 成员 动态分配 C++ 是否      更新时间:2023-10-16

例如,假设您有:

Class Test
{
     public:
     Test();
     private:
     int x = 0;
     int y = 3;
}

使用类似的东西声明测试的实例

Test * RRR = new Test();

假设您键入的某个地方

delete RRR;

这是否也会删除 x 和 y 占用的内存?

简短的回答是肯定的,但严格来说,x和y不会被删除。它们占用的内存将被释放,因为它们是结构的数据成员。

即使您没有定义析构函数,编译器也会为您合成一个默认析构函数,这将释放结构占用的内存。