我有兩個類程序員和CSstudent的以下示例代碼其中析構函數執行
CSstudent:public Programmer
析構函數爲兩個類定義:
class Programmer{
.........
public:
~Programmer(){
cout<<"A Programmer obj destroyed";
}
}
class CSstudent:public Programmer{
.........
public:
~CSstudent(){
cout<<"CSstudent obj destroyed";
}
}
現在主要():
int main(){
CSstudent cs1;
/* call to CSstudent member functions by invoking the cs1 object
........... */
cout<<cs1.getName()<<cs1.getUni()<<cs1.getLang()<<endl;
}
該程序運行後,我得到如下: CSstudent OBJ破壞 程序員OBJ破壞
我知道,析構函數不能被繼承,而當對象超出範圍的析構函數被調用。我初始化了一個CSstudent對象,那麼爲什麼程序員類的析構函數會被調用?
我希望這個輸出: CSstudent OBJ破壞
基類也必須銷燬。它的析構函數正在運行,以便它可以處理基類中的任何潛在資源。 –
你問這個...學生繼承程序員,因此當你創建一個學生時,你還必須創建一個程序員。由此導致,一旦你摧毀了學生,你也必須摧毀一名程序員。嘗試在構造函數中放入相同的打印語句。 –
我強烈建議閱讀一本關於C++的書。 – SergeyA