課程
/后端開發(fā)
/C++
/C++遠(yuǎn)征之多態(tài)篇
既然子類公有繼承了父類,那就可以條用父類的成員函數(shù),那為什么在實例化的時候不直接實例化子類對象,例如:Circle *cir=new Circle(3,5,40),而是要實例化成父類對象,反而造成了麻煩
2016-09-05
源自:C++遠(yuǎn)征之多態(tài)篇 2-4
正在回答
視頻中已經(jīng)實例化了:
(1)Circle *cir=new Circle(3,5,40);Shape *shape1 = cir;
(2)Shape *shape1 = new Circle(3,5,4.0);
之間的區(qū)別只是子類對象有沒有子類指針指向;題主(1)應(yīng)該是想說子類對象有了子類指針指向的話,就可以利用刪除子類指針來調(diào)用子類析構(gòu)函數(shù)了,所以第二種做法非要再加上virtual虛析構(gòu)函數(shù),就是多此一舉;
其實,在使用的時候,我們用父類指針指向子類對象,什么時候結(jié)束使用該指針,如果使用(1),則要delete cir;可是我們已經(jīng)寫代碼不知道寫到哪里去了,當(dāng)父類指針shape1用完后,就地delete shape1;是比較實在的,不然就要再翻山越嶺去找子類指針;或者萬一我們在父類指針shape1沒有使用完之前,不小心delete cir;那么程序還要調(diào)用shape1,就會出現(xiàn)意想不到的問題;
視頻里不是都實例化了的嗎
舉報
本教程將帶領(lǐng)大家體會面向?qū)ο笕筇匦灾械亩鄳B(tài)特性
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2017-04-01
視頻中已經(jīng)實例化了:
(1)Circle *cir=new Circle(3,5,40);Shape *shape1 = cir;
(2)Shape *shape1 = new Circle(3,5,4.0);
之間的區(qū)別只是子類對象有沒有子類指針指向;題主(1)應(yīng)該是想說子類對象有了子類指針指向的話,就可以利用刪除子類指針來調(diào)用子類析構(gòu)函數(shù)了,所以第二種做法非要再加上virtual虛析構(gòu)函數(shù),就是多此一舉;
其實,在使用的時候,我們用父類指針指向子類對象,什么時候結(jié)束使用該指針,如果使用(1),則要delete cir;可是我們已經(jīng)寫代碼不知道寫到哪里去了,當(dāng)父類指針shape1用完后,就地delete shape1;是比較實在的,不然就要再翻山越嶺去找子類指針;或者萬一我們在父類指針shape1沒有使用完之前,不小心delete cir;那么程序還要調(diào)用shape1,就會出現(xiàn)意想不到的問題;
2016-09-05
視頻里不是都實例化了的嗎