亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

簡單解讀C++中的虛函數

2020-05-23 14:05:22
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C++中的虛函數,在C++中,虛函數聯系到多態、多態聯系到繼承,因而虛函數是C++中的一大重要特性,需要的朋友可以參考下
 

虛函數

簡單地說,那些被virtual關鍵字修飾的成員函數,就是虛函數。虛函數的作用,用專業術語來解釋就是實現多態性(Polymorphism),多態性是將接口與實現進行分離;用形象的語言來解釋就是實現以共同的方法,但因個體差異而采用不同的策略。下面來看一段簡單的代碼

class A{  public:    void print(){ cout<<”This is A”<<endl;}};class B:public A{  public:    void print(){ cout<<”This is B”<<endl;}};int main(){  //為了在以后便于區分,我這段main()代碼叫做main1  A a;  B b;  a.print();  b.print();}

通過class A和class B的print()這個接口,可以看出這兩個class因個體的差異而采用了不同的策略,輸出的結果也是我們預料中的,分別是This is A和This is B。但這是否真正做到了多態性呢?No,多態還有個關鍵之處就是一切用指向基類的指針或引用來操作對象。那現在就把main()處的代碼改一改。

int main(){  //main2  A a;  B b;  A* p1=&a;  A* p2=&b; (這里強行用指向基類的指針來操作衍生的對象)  p1->print();  p2->print();}

運行一下看看結果,喲呵,驀然回首,結果卻是兩個This is A。問題來了,p2明明指向的是class B的對象但卻是調用的class A的print()函數,這不是我們所期望的結果,那么解決這個問題就需要用到虛函數

class A{  public:  virtual void print() { cout<<”This is A”<<endl;} };class B:public A{  public:  void print() { cout<<”This is B”<<endl;}};

毫無疑問,class A的成員函數print()已經成了虛函數,那么class B的print()成了虛函數了嗎?回答是Yes,我們只需在把基類的成員函數設為virtual,其派生類的相應的函數也會自動變為虛函數。所以,class B的print()也成了虛函數。那么對于在派生類的相應函數前是否需要用virtual關鍵字修飾,那就是你自己的問題了。

現在重新運行main2的代碼,這樣輸出的結果就是This is A和This is B了。

現在來消化一下,我作個簡單的總結,指向基類的指針在操作它的多態類對象時,會根據不同的類對象,調用其相應的函數,這個函數就是虛函數。

純虛函數

虛函數的聲明以=0結束,便可將它聲明為純虛函數。包含純虛函數的類不允許實例化,稱為抽象類。 事實上純虛函數提供了面向對象中接口的功能。當然,這樣的接口是以繼承的方式實現的。

class CPerson{public:  virtual void hello() = 0;};CPerson p; // compile error

注意空方法、純虛函數、方法聲明的區別。類聲明中的空方法給出了方法聲明+方法定義。 只聲明但沒有定義的方法將會產生鏈接錯,無論是否被調用過。

class CPerson{public:  void empty(){};  void declare();};CPerson::declare(){  // ...};
 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级电影免费在线观看| 97精品一区二区视频在线观看| 一本色道久久88综合亚洲精品ⅰ| 黑丝美女久久久| 97国产真实伦对白精彩视频8| 中文字幕免费国产精品| 日韩二区三区在线| 亚洲欧洲一区二区三区久久| 欧美综合国产精品久久丁香| 国语对白做受69| 日本19禁啪啪免费观看www| 日韩精品在线私人| 欧美成人午夜激情| 欧美日韩精品在线视频| 欧美成人中文字幕| 亚洲男女性事视频| 国内精品国产三级国产在线专| 亚洲国产精品系列| 91探花福利精品国产自产在线| 亚洲精品美女网站| 欧美香蕉大胸在线视频观看| 久久精品亚洲94久久精品| 中文字幕亚洲第一| 最近更新的2019中文字幕| 日韩中文字在线| 国产精品永久免费| 欧美极品美女电影一区| 日韩中文字幕在线| 永久免费精品影视网站| 国产精品久久91| 成人福利网站在线观看| 亚洲成人黄色网址| 久久久久久久网站| 欧美另类极品videosbest最新版本| 国产91色在线|免| 欧美大片在线影院| 日韩精品视频免费专区在线播放| 欧美极品欧美精品欧美视频| 久久综合88中文色鬼| 国产精品久久久久久久久久久久久| 亚洲aⅴ男人的天堂在线观看| 91精品国产成人www| 久久99精品久久久久久噜噜| 欧美亚洲另类视频| 亚洲欧美国产制服动漫| 亚洲自拍偷拍色片视频| 在线播放日韩欧美| 成人欧美一区二区三区黑人| 欧美日韩一区二区免费在线观看| 亚洲视频在线播放| 亚洲欧美国产高清va在线播| 欧美激情国产精品| 久久精品国产综合| 中文字幕亚洲欧美日韩2019| 欧美日韩一区二区在线播放| 亚洲国内精品视频| 91精品视频在线看| 日韩一级黄色av| 亚洲天堂av图片| 91国产精品电影| 亚洲日本aⅴ片在线观看香蕉| 正在播放国产一区| 中文字幕一区二区精品| 日本精品中文字幕| 亚洲精品xxxx| 人九九综合九九宗合| 国产美女久久精品香蕉69| 日韩va亚洲va欧洲va国产| 人人澡人人澡人人看欧美| 91亚洲va在线va天堂va国| 日韩一区二区久久久| 国产91精品不卡视频| 九九热这里只有在线精品视| 日韩免费在线看| 福利二区91精品bt7086| 日韩中文字幕在线免费观看| 国产精品入口尤物| 国产精品揄拍500视频| 日本精品性网站在线观看| 亚洲电影av在线| 91国产美女在线观看| 国产欧美一区二区三区四区| 国产啪精品视频网站| 国产在线视频不卡| www欧美日韩| 欧美黑人又粗大| 日韩在线观看免费网站| 亚洲精品视频久久| 亚洲丝袜在线视频| 中文字幕久精品免费视频| 色777狠狠综合秋免鲁丝| 92裸体在线视频网站| 国产一区玩具在线观看| 欧美插天视频在线播放| 欧美日韩精品在线观看| 亚洲第一免费播放区| www.亚洲免费视频| 国产精品第一视频| wwwwwwww亚洲| 国产精品va在线播放| 亚洲天堂成人在线视频| 欧美激情综合亚洲一二区| 久久久久久久爱| 久久久免费在线观看| 国产精品直播网红| 国产精品夜色7777狼人| 国产精品人成电影在线观看| 亚洲精品福利在线| 亚洲在线视频观看| 日韩在线观看免费全| 亚洲欧美综合v| 久久久久久欧美| 久久亚洲精品小早川怜子66| 欧美成人精品在线播放| 亚洲性视频网站| 欧美性猛xxx| 日韩av电影国产| 国模视频一区二区三区| www.精品av.com| 国产视频精品va久久久久久| 国产亚洲欧洲在线| 欧美国产日本在线| 欧美一级大片在线免费观看| 国内成人精品一区| 亚洲欧美在线x视频| 日韩美女写真福利在线观看| 日韩精品视频在线播放| 国产精品美女午夜av| 日韩高清不卡av| 成人中心免费视频| 91高清视频在线免费观看| 亚洲福利在线看| 亚洲人成毛片在线播放| 国产日韩在线观看av| 国产精品老牛影院在线观看| 亚洲欧美国产一本综合首页| 国产精品久久网| 欧美色另类天堂2015| 国产精品99久久久久久久久| 亚洲三级免费看| 高清欧美性猛交xxxx黑人猛交| 亚洲精品日韩久久久| 欧美最顶级丰满的aⅴ艳星| 欧美精品在线免费播放| 欧美午夜视频在线观看| 久久免费国产精品1| 韩国日本不卡在线| 欧美久久精品一级黑人c片| 日韩资源在线观看| 丰满岳妇乱一区二区三区| 久久91亚洲人成电影网站| 国产精品久久久久久av福利软件| 亚洲精品国精品久久99热一| 亚洲成人黄色网址| 国产亚洲人成网站在线观看| 一本色道久久综合亚洲精品小说| 成人午夜激情网| 91精品国产综合久久香蕉最新版| 91免费看视频.| 精品二区三区线观看| 欧美精品在线极品| 国产精品高潮在线| 亚洲精品成人久久| 色先锋久久影院av|