2016-09-25 185 views
0

我在讀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

回答

1

或者我需要寫一個析構函數來明確刪除這些成員變量嗎?

在你的情況下,沒有必要寫,因爲id爲基本類型,pointArray是已經有析構函數將釋放內存的向量。但是,如果您使用原始指針(通過new []分配緩衝區),那麼在析構函數中必須手動釋放內存(delete [])。

1

您不必刪除的成員變量 - 但你需要delete的pointArray的內容,如果您創建它(與new

一般來說,你創建(的地方),用new任何you需要delete也(某處);這是你的問題得到解決。
在這裏:您創建了pointCloud,並將其刪除。這很好。