C++虛函數(shù)初步

剛開始接觸C++中的虛函數(shù),云里霧里的感覺,后面看了幾篇博客,了解了一些。

C++中面向?qū)ο蟪绦蛟O計中具有多態(tài)性,意思是對不同的對象發(fā)送同一個消息,而不同的對象對這消息的回應有著不同的行為。舉個例子,你從火車站出來,大吼一聲我要去XXX地方,會有的士、公交、三輪車還有黑車等著你,這時你可以選擇其中之一,每種車明顯不同,有的快,有的舒適,有的危險。在這里面,“吼聲”就是C++中的消息,其中不同的對象即為各種車,消息是一定的,但回應的方法有多種。在C++里面,虛函數(shù)有著自己的作用。

假設有這么一個基類,比如:

class Car{

private:float Speed;

public:

car(float speed){

Speed ?=speed;

}

void drive();

};

現(xiàn)在我們?yōu)樗砑优缮?

class Bus:public Car{

public:

Bus(float speed):Car(Speed){};

void drive();

}

然后在main中加入

Car *car;

Bus bus(60);

car = &bus;

car->drive();

運行會發(fā)現(xiàn)最后的drive()是調(diào)用的基類的drive(),即是car中的,而不是bus中的,為什么呢,雖然派生類對象調(diào)用同名成員函數(shù)是來自自己類中的成員函數(shù),但是當基類指針指向共有派生類對象時(也就是bus),它只能訪問從基類繼承下來的成員,而不能訪問派生類中定義的成員。那么想使用bus中的drive()函數(shù)該怎么辦呢?說起來也簡單,只需將所有類中的drive()函數(shù)聲明前加上virtual將其變?yōu)樘摵瘮?shù)就行啦

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 我們知道,在同一類中是不能定義兩個名字相同、參數(shù)個數(shù)和類型都相同的函數(shù)的,否則就是“重復定義”。但是在類的繼承層次...
    踩在浪花上00閱讀 529評論 0 1
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,655評論 1 51
  • C++文件 例:從文件income. in中讀入收入直到文件結束,并將收入和稅金輸出到文件tax. out。 檢查...
    SeanC52111閱讀 3,090評論 0 3
  • C++虛函數(shù) C++虛函數(shù)是多態(tài)性實現(xiàn)的重要方式,當某個虛函數(shù)通過指針或者引用調(diào)用時,編譯器產(chǎn)生的代碼直到運行時才...
    小白將閱讀 1,798評論 4 19
  • 那段時間,李白在長安混得很不好,整天喝酒玩樂發(fā)牢騷。什么“大道如青天,我獨不得出”啦,什么“停杯投箸不能食,拔劍四...
    池塘之底閱讀 7,192評論 9 33

友情鏈接更多精彩內(nèi)容