C++析构函数的成员变量?

问题描述:

我在读this后,我想澄清,我是否需要显式删除动态创建的对象的成员变量?C++析构函数的成员变量?

例如,我有一个类带有两个成员变量,

class pointCloud 
{ 
public: 
    pointCloud(); 
    void addPoint(int); 
    point getPoint(int); 

private: 
    int id; 
    std::vector<point> pointArray; 

}; 

,然后我在主制作一个动态实例...

int main() 
{ 

    pointCloud* cloud = new pointCloud; 
    cloud->addPoint(8); 

    delete cloud; 
} 

我的理解是,当调用delete cloud;时,'id'和'pointArray'变量将自动从内存中删除/释放。它是否正确?或者我需要编写一个析构函数来显式删除这些成员变量?

+0

是的,正确的..析构函数是需要释放动态分配的内存 – SimpleGuy

或者我需要写一个析构函数来明确删除这些成员变量吗?

在你的情况下,没有必要写,因为id为基本类型,pointArray是已经有析构函数将释放内存的向量。但是,如果您使用原始指针(通过new []分配缓冲区),那么在析构函数中必须手动释放内存(delete [])。

您不必删除的成员变量 - 但你需要delete的pointArray的内容,如果您创建它(与new

一般来说,你创建(的地方),用new任何you需要delete也(某处);这是你的问题得到解决。
在这里:您创建了pointCloud,并将其删除。这很好。