C++點滴:創建對象數組的時候,不要使用繼承

創建對象數組的時候,不要使用繼承,因爲如果一個數據聲明爲父類型,但是實際使用子類型創建,那麼在刪除對象數據的時候,則只會調用父類型的析構函數,而不會調用子類型的析構函數,造成內存泄漏,例如:
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()
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章