[英]deleting dynamically allocated object that contains vector in C++ STL
我有一堂課
class ChartLine{
protected:
vector<Point> line; // points connecting the line
CString name; //line name for legend
CPen pen; //color, size and style properties of the line
};
點是結構
struct Point{
CString x;
double y;
};
在main()
我使用new
運算符動態分配了ChartLine
類型的對象。 如果以后使用delete
,默認析構函數~ChartLine()
是否會正確地釋放(或清除)成員ChartLine::line
(向量btw),還是必須手動在~ChartLine()
清除該向量?
提前致謝。 干杯。
是的,銷毀矢量時,矢量中的所有對象都將銷毀。 從外觀上看,您的代碼應按原樣運行(盡管假定CString
是MFC的CString
,但它的某些舊版本存在一些內存泄漏...)
您唯一需要擔心析構函數中的向量(或其他容器)的情況是,它們是否包含指向對象的指針。 由於您的情況並非如此,因此您應該沒事。
唯一需要調用delete
是在調用new
。 其他一切都已處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.