亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問什么是c++虛函數?

請問什么是c++虛函數?

C++ C
PIPIONE 2021-10-06 11:07:22
#include<iostream.h>class mammal{public:mammal():itsage(1){}virtual~mammal(){}virtual void speak()const{cout<<"mammal speak!\n";}protected:int itsage;};class dog:public mammal{public:void speak()const{cout<<"woof!\n";}};class cat:public mammal{public:void speak()const{cout<<"meow!\n";}void valuefunction(mammal);void ptrfunction(mammal*);void reffunction(mammal&);int main(){mammal*ptr=0;int choice;while(1){bool fquit=false;cout<<"(1)dog(2)cat(0)quit:";cin>>choice;switch(choice){case 0:fquit=true;break;case 1:ptr=new dog;break;case 2:ptr=new cat;break;default:ptr=new mammal;break;}if(fquit)break;ptrfunction(ptr); //錯了吧?reffunction(*ptr); //錯了吧?valuefunction(*ptr); //錯了吧?}return 0;}void valuefunction(mammal mammalvalue){mammalvalue.speak();}void ptrfunction(mammal*pmammal){pmammal->speak();}void reffunction(mammal&rmammal){rmammal.speak();}(1)dog(2)cat(0)quit:1woofwoofmammal speak! //怎么來的?(1)dog(2)cat(0)quit:2meow!meow!mammal speak! //怎么來的?(1)dog(2)cat(0)quit:0
查看完整描述

1 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

這是我學虛函數時的筆記,看完你應該自己能解決上面你的問題了:
1)將基類某函數申明為虛函數,說明基類準備讓子類在其中修改該函數的實現
2)如果僅是子類中對基類的A()函數重寫,則基類對象調用A()時,仍調用基類中A()的實現,而子類對象調用A()時,調用子類中A()的實現
3)如果基類的A()申明為虛函數,則基類對象調用A()時,調用的是子類中A()的實現,即通過基類指針可以訪問派生類的虛方法

查看完整回答
反對 回復 2021-10-10
  • 1 回答
  • 0 關注
  • 299 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號