課程
/后端開發(fā)
/C++
/C++遠(yuǎn)征之多態(tài)篇
Animal 是純虛函數(shù),可是為什么可以用來實(shí)例化對(duì)象呢?
Animal *animal=new Dog("狗類");
這樣寫竟然可以通過編譯!?。。?!
2015-10-26
源自:C++遠(yuǎn)征之多態(tài)篇 3-8
正在回答
你所說的Animal是一個(gè)類,而這個(gè)類中有一個(gè)純虛函數(shù)對(duì)吧,而你實(shí)例化的時(shí)候,是實(shí)例的它的子類Dog這個(gè)類,而在Dog這個(gè)類中實(shí)現(xiàn)了Move這個(gè)函數(shù),所以能實(shí)例化
qq_陽(yáng)光下的海風(fēng)_0 提問者
心悅君夕 回復(fù) qq_陽(yáng)光下的海風(fēng)_0 提問者
qq_陽(yáng)光下的海風(fēng)_0 提問者 回復(fù) 心悅君夕
#include?<iostream> #include?<stdlib.h> #include?<string> using?namespace?std; class?Animal { public: ????Animal()?{} ????Animal(string?name) ????{ ????????m_strName?=?name; ????????cout?<<?"Animal"?<<?endl; ????} ????virtual??~Animal() ????{ ????????cout?<<?"~Animal"?<<?endl; ????} ????virtual?void?eat() ????{ ????????cout?<<?"Animal--"?<<?m_strName?<<?"--?eat"?<<?endl; ????} ????virtual?void?Move()?=0; public: ????string?m_strName; }; class?Dog?:?public?Animal { public: ????Dog()?{} ????Dog(string?name) ????{ ????????m_strName?=?name; ????????cout?<<?"Dog"?<<?endl; ????} ????virtual?~Dog() ????{ ????????cout?<<?"~Dog"?<<?endl; ????} ????virtual?void?eat() ????{ ????????cout?<<?"Dog--"?<<?m_strName?<<?"?--?eat"?<<?endl; ????} ????virtual?void?Move() ????{ ????????cout?<<?"Dog--"?<<?m_strName?<<?"?--?move"?<<?endl; ????} public: ????string?m_strName; }; int?main(void) { ????Animal?*animal=new?Dog("狗類"); ????animal->eat(); ????animal->Move(); ????delete?animal; ????animal=NULL; ????return?0; }
Animal *animal=new Dog("狗類");就是這句代碼
你代碼呢?
舉報(bào)
本教程將帶領(lǐng)大家體會(huì)面向?qū)ο笕筇匦灾械亩鄳B(tài)特性
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2015-10-29
你所說的Animal是一個(gè)類,而這個(gè)類中有一個(gè)純虛函數(shù)對(duì)吧,而你實(shí)例化的時(shí)候,是實(shí)例的它的子類Dog這個(gè)類,而在Dog這個(gè)類中實(shí)現(xiàn)了Move這個(gè)函數(shù),所以能實(shí)例化
2015-10-28
Animal *animal=new Dog("狗類");就是這句代碼
2015-10-27
你代碼呢?