課程
/后端開發(fā)
/C++
/C++遠征之多態(tài)篇
不應該是
~Coordinate
~Circle()
~Shape()
嗎?
為什么是
2016-07-23
源自:C++遠征之多態(tài)篇 2-5
正在回答
看圖不解釋
不是這樣的,和其他沒關系,這個主要看你~Circle()中代碼寫的順序
Circle::~Circle()
{
cout << "析構函數 Circle::~Circle()" << endl;//在前
delete m_pCenter;
m_pCenter = NULL;
}
這樣就先輸出了?~Circle()
cout << "析構函數 Circle::~Circle()" << endl;//在后
這樣就先輸出了?Coordinate
這樣就輸出了?~Circle()
這樣就輸出了?Coordinate
我明白了,因為 ~Circle()里先輸出了?~Circle(),然后才delete m_pCenter
而且 Circle和 Coordinate并不是繼承的關系,是包含,所以不會先執(zhí)行 ~Coordinate
舉報
本教程將帶領大家體會面向對象三大特性中的多態(tài)特性
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優(yōu)惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-03-20
看圖不解釋
2016-08-05
不是這樣的,和其他沒關系,這個主要看你~Circle()中代碼寫的順序
Circle::~Circle()
{
cout << "析構函數 Circle::~Circle()" << endl;//在前
delete m_pCenter;
m_pCenter = NULL;
}
這樣就先輸出了?~Circle()
Circle::~Circle()
{
delete m_pCenter;
m_pCenter = NULL;
cout << "析構函數 Circle::~Circle()" << endl;//在后
}
這樣就先輸出了?Coordinate
2016-08-05
不是這樣的,和其他沒關系,這個主要看你~Circle()中代碼寫的順序
Circle::~Circle()
{
cout << "析構函數 Circle::~Circle()" << endl;//在前
delete m_pCenter;
m_pCenter = NULL;
}
這樣就輸出了?~Circle()
Circle::~Circle()
{
delete m_pCenter;
m_pCenter = NULL;
cout << "析構函數 Circle::~Circle()" << endl;//在后
}
這樣就輸出了?Coordinate
2016-07-23
我明白了,因為 ~Circle()里先輸出了?~Circle(),然后才delete m_pCenter
而且 Circle和 Coordinate并不是繼承的關系,是包含,所以不會先執(zhí)行 ~Coordinate