課程
/后端開發(fā)
/C++
/C++遠(yuǎn)征之多態(tài)篇
/tmp/ccFDgxDy.o: In function `Dog::Dog(std::string)':index.cpp:(.text._ZN3DogC2ESs[_ZN3DogC5ESs]+0x19): undefined reference to `Animal::Animal()'collect2: error: ld returned 1 exit status
2017-01-12
源自:C++遠(yuǎn)征之多態(tài)篇 3-4
正在回答
#include?<iostream> #include?<stdlib.h> #include?<string> using?namespace?std; /** ?*?定義動(dòng)物類:Animal ?*?虛函數(shù):eat() ?*?純虛函數(shù):move() ?*?數(shù)據(jù)成員:m_strName ?*/ class?Animal { public: ????//?默認(rèn)構(gòu)造函數(shù) ????Animal(){} ????//?含參構(gòu)造函數(shù) Animal(string?name){m_strName?=?name;?cout?<<?"Animal"?<<?endl;} ????//?虛析構(gòu)函數(shù) virtual?~Animal(){cout?<<?"~Animal"?<<?endl;} ????//?虛成員函數(shù) virtual??void?eat(){cout?<<?"Animal--"?<<?m_strName?<<?"--?eat"?<<?endl;} ????//?純虛函數(shù) virtual?void?move()?=?0; public: ????//?數(shù)據(jù)成員 string?m_strName; }; /** ?*?定義狗類:Dog ?*?公有繼承動(dòng)物類 ?*?虛成員函數(shù):eat()、move() ?*/ class?Dog?:?public?Animal { public: ????//?默認(rèn)構(gòu)造函數(shù) ????Dog(){} ????//?含參構(gòu)造函數(shù) Dog(string?name){m_strName?=?name;?cout?<<?"Dog"?<<?endl;} ????//?虛析構(gòu)函數(shù) virtual?~Dog(){cout?<<?"~Dog"?<<?endl;} ????//?虛成員函數(shù)eat() virtual?void?eat(){cout?<<?"Dog--"?<<?m_strName?<<?"?--?eat"?<<?endl;} ????//?虛成員函數(shù)move() virtual?void?move(){cout?<<?"Dog--"?<<?m_strName?<<?"?--?move"?<<?endl;} public: ????//?數(shù)據(jù)成員 string?m_strName; }; int?main(void) { ????//?通過動(dòng)物類實(shí)例化狗類 ????Dog?a(狗類); ????Animal?*pa?=?a; ????//?調(diào)用成員函數(shù) pa->eat(); ????pa->move(); ????//?釋放內(nèi)存 delete?*pa; pa?=?NULL; ???? return?0; }
Animal的默認(rèn)構(gòu)造函數(shù)只聲明了,沒有定義;
應(yīng)該把“Animal();”改為“Animal(){}”
舉報(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)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2017-03-30
2017-01-12
Animal的默認(rèn)構(gòu)造函數(shù)只聲明了,沒有定義;
應(yīng)該把“Animal();”改為“Animal(){}”