課程
/后端開發
/C++
/C++遠征之多態篇
這個為什么 沒有加虛構函數
2017-03-31
源自:C++遠征之多態篇 3-6
正在回答
Student stu;//在棧中實例化Student。內存由系統控制,不需要自己釋放
Student * stup = new Student();//在堆中實例化Student。內存由自己控制,系統不管。
delete stup;//這個時候調用析構函數
stup = NULL;
WORLD_CONNECTED
虛析構函數適用場景是:繼承關系存在,當使用父類指針指向堆中申請的子類對象,需要銷毀子類及父類對象時,通過虛析構函數能使得delete 父類指針之前,執行子類對象的虛析構函數,進而銷毀子類對象,達到保護內存的目的。 因此關鍵點就是父類指針指向堆中申請的子類對象,如果沒有使用new申請子類對象,就不需要考慮虛析構函數。
因為這里的類內并沒有涉及到用new從堆中分配內存,所以不寫也沒關系,建議你重新看一下之前關于虛析構函數的視頻,那里有詳細解答
你這問題描述不太清楚啊,你說的是接口類沒有析構函數?
舉報
本教程將帶領大家體會面向對象三大特性中的多態特性
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2019-09-24
2017-12-15
Student stu;//在棧中實例化Student。內存由系統控制,不需要自己釋放
Student * stup = new Student();//在堆中實例化Student。內存由自己控制,系統不管。
delete stup;//這個時候調用析構函數
stup = NULL;
2017-06-08
虛析構函數適用場景是:繼承關系存在,當使用父類指針指向堆中申請的子類對象,需要銷毀子類及父類對象時,通過虛析構函數能使得delete 父類指針之前,執行子類對象的虛析構函數,進而銷毀子類對象,達到保護內存的目的。 因此關鍵點就是父類指針指向堆中申請的子類對象,如果沒有使用new申請子類對象,就不需要考慮虛析構函數。
2017-04-27
因為這里的類內并沒有涉及到用new從堆中分配內存,所以不寫也沒關系,建議你重新看一下之前關于虛析構函數的視頻,那里有詳細解答
2017-04-01
你這問題描述不太清楚啊,你說的是接口類沒有析構函數?