簡體   English   中英

c ++成員變量的析構函數?

[英]c++ Destructor for Member Variables?

我正在閱讀這篇文章,我想澄清一下,我是否需要顯式刪除動態創建的對象的成員變量?

例如,我有一個帶有兩個成員變量的類,

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

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

};

然后我在main中創建它的動態實例...

int main()
{

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

    delete cloud;
}

我的理解是delete cloud; 被調用時,'id'和'pointArray'變量將自動從內存中刪除/釋放。 這個對嗎? 或者我是否需要編寫析構函數來顯式刪除這些成員變量?

或者我是否需要編寫析構函數來顯式刪除這些成員變量?

在你的情況下不需要寫,因為id是一個原始類型, pointArray是一個已經有析構函數的向量,它將釋放內存。

但是,如果你使用原始指針(通過new []分配緩沖區),那么在析構函數中你必須手動釋放內存(delete [])。

您不需要刪除成員變量 - 但是如果您創建了它,則需要delete pointArray的內容(使用new

通常,無論使用new創建(某處), 需要delete (某處); 解決這個問題是你的問題所在。
這里:您創建了pointCloud,並將其刪除。 那很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM