創建對象數組的時候,不要使用繼承,因爲如果一個數據聲明爲父類型,但是實際使用子類型創建,那麼在刪除對象數據的時候,則只會調用父類型的析構函數,而不會調用子類型的析構函數,造成內存泄漏,例如:
class Base
{
public:
Base(){cout << "Base()" <<endl;}
~Base(){cout <<"~base()" <<endl;}
};
class Son:public Base
{
public:
Son(){cout << "Son()"<<endl;}
~Son(){cout << "~Son()" << endl;}
};
void printClass()
{
//Son s[10];
Base *b = new Son[10];
delete[] b;//只會打印出10個~base(),而不會調用~Son()
}
C++點滴:創建對象數組的時候,不要使用繼承
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
2020 重学C++ 重构你的C++知识体系
wy53780
2020-04-23 14:13:15
现代C++实战30讲
wy53780
2020-04-23 13:58:44
node遇上c++ --- 愛情來的太快(一) (沒有文章)
sewerganger
2019-02-24 22:55:07
近期前端發展計劃
Ashleysweetie
2019-02-24 22:32:41
Xcode與C++之遊戲開發:Pong遊戲
優惠碼優惠
2019-02-24 19:41:23
C++回聲服務器_2-修復客戶端問題
chenBright
2019-02-24 12:55:03
C++面試基礎之static關鍵字詳解
riccoqu
2019-02-24 12:42:54
[C++回聲服務器_1]簡單版本
chenBright
2019-02-23 15:42:37
雙向鏈表(不帶頭結點)
toigel
2019-02-23 13:43:42
單鏈表(不帶頭結點)
toigel
2019-02-23 13:38:11
雙向鏈表(帶頭結點)
toigel
2019-02-23 13:38:11
MySQL 事務、函數、觸發器、數據庫備份、權限管理
死瘦宅
2019-02-24 22:35:12
Spring Cloud Alibaba基礎教程:支持的幾種服務消費方式(RestTemplate、WebClient、Feign)
程序猿dd
2019-02-24 10:41:27