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

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

C++多態的實現機制深入理解

2020-05-23 14:01:41
字體:
來源:轉載
供稿:網友

在面試過程中C++的多態實現機制經常會被面試官問道。大家清楚多態到底該如何實現嗎?下面小編抽空給大家介紹下多態的實現機制。

1. 用virtual關鍵字申明的函數叫做虛函數,虛函數肯定是類的成員函數。

2. 存在虛函數的類都有一個一維的虛函數表叫做虛表。類的對象有一個指向虛表開始的虛指針。虛表是和類對應的,虛表指針是和對象對應的。

3. 多態性是一個接口多種實現,是面向對象的核心。分為類的多態性和函數的多態性。

4. 多態用虛函數來實現,結合動態綁定。

5. 純虛函數是虛函數再加上= 0。

6. 抽象類是指包括至少一個純虛函數的類。

多態的簡單介紹

一般來說,多態分為兩種,靜態多態動態多態。靜態多態也稱編譯時多態,主要包括模板和重載。而動態多態則是通過類的繼承和虛函數來實現,當基類和子類擁有同名同參同返回的方法,且該方法聲明為虛方法,當基類對象,指針,引用指向的是派生類的對象的時候,基類對象,指針,引用在調用基類的方法,實際上調用的是派生類方法。這就是動態多態。

靜態多態的實現

靜態多態靠編譯器來實現,簡單來說就是編譯器對原來的函數名進行修飾,在c語言中,函數無法重載,是因為,c編譯器在修飾函數時,只是簡單的在函數名前加上下劃線"_" 。而c++編譯器不同,它根據函數的類型,個數來對函數名進行修飾,這就使得函數可以重載,同理,模板也是可以實現的,針對不同類型的實參來產生對應的特化的函數,通過增加修飾,使得不同的類型參數的函數得以區分。

以下段程序為例

#include <iostream>using namespace std;template <typename T1, typename T2>int fun(T1 t1, T2 t2){}int foofun(){}int foofun(int){}int foofun(int , float){}int foofun(int , float ,double){}int main(int argc, char *argv[]){fun(1, 2);fun(1, 1.1);foofun();foofun(1);foofun(1, 1.1);foofun(1, 1.1, 1.11);return 0;}

經過編譯之后:

c多態的實現機制

只選取main函數部分來看:

c多態的實現機制

可以發現,調用的函數名均發生了變化,都加了相應的修飾,使得調用的函數是不一樣的,靜態多態就是如此。

動態多態的實現

聲明一個類時,如果類中有虛方法,則自動在類中增加一個虛函數指針,該指針指向的是一個虛函數表,虛函數表中存著每個虛函數真正對應的函數地址。動態多態采用一種延遲綁定技術,普通的函數調用,在編譯期間就已經確定了調用的函數的地址,所以無論怎樣調用,總是那個函數,但是擁有虛函數的類,在調用虛函數時,首先去查虛函數表,然后在確定調用的是哪一個函數,所以,調用的函數是在運行時才會確定的。

在聲明基類對象時,虛函數表中綁定的就是基類的方法的地址。在聲明派生類對象時,虛函數表中綁定的就是派生類的方法。在對象被創建之后(以指針為例),無論是基類指針還是派生類指針指向這個對象,虛函數表是不會改變的。
以下段程序為例:

#include <iostream>using namespace std;class Base{public:virtual void fun(){cout << "this is base fun" << endl;}};class Derived : public Base{public:void fun(){cout << "this is Derived fun" << endl;}};int main(int argc, char *argv[]){Base b1;Derived d1;Base *pb = &d1;Derived *pd = (Derived *)&b1;b1.fun();pd->fun();d1.fun();pb->fun();return 0;}

運行結果如下:

c多態的實現機制

從結果可以看出,當一個對象被創建之后,在調用虛函數的時候,無論是派生類指針還是基類指針指向這個對象,調用虛函數的結果是一樣的。因為,虛函數表是不變。當然,有可能在多繼承中會有多個虛函數表從而導致函數調用時調用不同的虛函數表,這里不做考慮。

以上所述是小編給大家介紹的C++多態的實現機制理解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品人伦一区二区三区蜜桃免费| 亚洲免费影视第一页| 国产成人久久久| 国产亚洲精品91在线| 亚洲网在线观看| 国产日韩专区在线| 中文字幕在线看视频国产欧美在线看完整| 亚洲天堂av高清| 亚洲日本成人网| 成人久久一区二区三区| 亚洲iv一区二区三区| 91精品久久久久久久久久另类| 91久久国产综合久久91精品网站| 日韩成人在线观看| 日韩亚洲国产中文字幕| 亚洲欧美日韩久久久久久| 欧美激情中文字幕乱码免费| 亚洲伊人久久大香线蕉av| 成人午夜黄色影院| 91国产精品视频在线| 韩国视频理论视频久久| 亚洲国产精品人人爽夜夜爽| 久久久久久噜噜噜久久久精品| 国产亚洲人成网站在线观看| 中文国产成人精品| 成人免费在线视频网址| 91沈先生作品| 欧美最猛黑人xxxx黑人猛叫黄| 成人免费大片黄在线播放| 国产精品亚洲自拍| 久久久999国产| 狠狠躁夜夜躁人人躁婷婷91| 欧美午夜激情小视频| 欧美激情视频在线免费观看 欧美视频免费一| 国产欧美精品在线| 视频直播国产精品| 在线播放精品一区二区三区| 久久精品国产清自在天天线| 日韩美女中文字幕| 欧美日本精品在线| 欧美电影在线观看| 亚洲自拍偷拍视频| www.久久久久| 日韩av中文字幕在线| 日韩视频免费在线| 成人xxxx视频| 欧美性受xxxx白人性爽| 国产精品成人观看视频国产奇米| 日韩久久免费视频| 日韩精品日韩在线观看| 国产免费亚洲高清| 国产精品午夜国产小视频| 国语自产精品视频在线看抢先版图片| 一道本无吗dⅴd在线播放一区| 97超视频免费观看| 91免费看视频.| 日韩精品中文字幕在线播放| 日韩中文字幕在线播放| 久久久人成影片一区二区三区观看| 最近中文字幕2019免费| 成人午夜激情免费视频| 久久久久日韩精品久久久男男| 日本精品视频在线播放| 国产a级全部精品| 久久免费成人精品视频| 疯狂做受xxxx高潮欧美日本| 欧美老少做受xxxx高潮| 欧美日韩国产综合新一区| 国产精品无码专区在线观看| 国产精品久久一区| 欧美性xxxx18| 亚洲精品一区中文字幕乱码| 欧美日韩国产成人在线观看| 91国语精品自产拍在线观看性色| 中文字幕在线观看亚洲| 欧美激情中文字幕乱码免费| 91最新国产视频| 日韩福利在线播放| 懂色aⅴ精品一区二区三区蜜月| 91久久在线观看| 97视频在线播放| 亚洲japanese制服美女| 成人亚洲欧美一区二区三区| 国产精品免费久久久久影院| 国产精品毛片a∨一区二区三区|国| 亚洲天堂免费视频| 日韩中文字幕在线精品| 成人国产精品色哟哟| 992tv成人免费影院| 欧美日本亚洲视频| 中国人与牲禽动交精品| 日韩欧美大尺度| 日韩成人在线电影网| 国产精品av免费在线观看| 2019中文字幕免费视频| 亚洲国产精品人久久电影| 中文字幕亚洲一区二区三区五十路| 久久久人成影片一区二区三区| 色偷偷偷亚洲综合网另类| 欧美性xxxxxxxxx| 久久久噜噜噜久久久| 成人疯狂猛交xxx| 欧美日韩国产一区二区三区| 国产精品免费一区豆花| 成人精品一区二区三区电影黑人| 青青草一区二区| 日韩欧美亚洲成人| 国产精品视频久久| 欧美国产日韩二区| 欧美日韩成人在线播放| 国产精品99免视看9| 国产午夜精品免费一区二区三区| 国产在线视频一区| 精品国产乱码久久久久久婷婷| 精品精品国产国产自在线| 日韩精品免费在线| 久久亚洲综合国产精品99麻豆精品福利| 欧美成人免费在线观看| 久久久久久久久爱| 亚洲视频电影图片偷拍一区| 国产精品成人国产乱一区| 九九精品视频在线观看| 精品久久久久久久大神国产| 亚洲成人av中文字幕| xxx成人少妇69| 国产成人精品午夜| 成人免费视频网| 国产精品国内视频| 97婷婷涩涩精品一区| 欧美老女人性生活| 中文字幕亚洲综合| 亚洲电影免费观看高清| 欧美精品激情视频| 亚洲午夜未满十八勿入免费观看全集| 久久91超碰青草是什么| 日韩欧美在线观看| 色综合视频网站| 亚洲精品在线91| 久久久久久久久久国产精品| 91免费看视频.| 国外视频精品毛片| 永久免费精品影视网站| 国产精品精品久久久久久| 神马久久桃色视频| 91国产精品视频在线| 国产精品久久久久免费a∨| 久久精品亚洲精品| 色综合导航网站| 91精品国产91久久久久久| 国产日韩专区在线| 777777777亚洲妇女| 欧美孕妇孕交黑巨大网站| 亚洲伊人一本大道中文字幕| 亚洲电影免费观看高清| 3344国产精品免费看| 91久久夜色精品国产网站| 川上优av一区二区线观看| 中文字幕日韩av综合精品| 8050国产精品久久久久久| 亚洲精品www久久久久久广东| 91老司机在线| 欧美在线一级视频| 97视频国产在线| 不卡毛片在线看|