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

时间:2013-10-14 23:56:14

标签: c++ memory-management

例如,假设你有:

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

使用

之类的东西声明Test的实例
Test * RRR = new Test();

让我们说出你输入的某个地方

delete RRR;

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

1 个答案:

答案 0 :(得分:1)

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

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