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

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

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

2020-01-26 14:30:16
字體:
來源:轉載
供稿:網友

在面試過程中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;}

經過編譯之后:

只選取main函數部分來看:

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

動態多態的實現

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

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

#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++多態的實現機制理解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线看片第一页欧美| 国内精品一区二区三区四区| 中文字幕日韩av| 久久久久免费视频| 日韩av影院在线观看| 91精品国产综合久久香蕉的用户体验| 亚洲人成五月天| 亚洲摸下面视频| 色偷偷av一区二区三区乱| 亚洲成人黄色网| 欧美中文字幕视频| 国产成人aa精品一区在线播放| 国内揄拍国内精品| 韩国精品久久久999| 色综合男人天堂| 一本色道久久综合亚洲精品小说| 456亚洲影院| 精品久久久久久中文字幕一区奶水| 精品美女永久免费视频| 欧美裸体xxxx| 岛国av午夜精品| 亚洲天堂一区二区三区| 精品亚洲男同gayvideo网站| 欧美国产日韩视频| 欧美孕妇毛茸茸xxxx| 日韩一区二区久久久| 久久久久久久久综合| 欧美激情精品久久久久久蜜臀| 久久手机精品视频| 78m国产成人精品视频| 国产一级揄自揄精品视频| 国产精品自产拍在线观| 亚洲精品v欧美精品v日韩精品| 国产亚洲欧美一区| 岛国精品视频在线播放| 日韩在线观看精品| 一区二区三区在线播放欧美| 亚洲国产中文字幕久久网| 91国产视频在线播放| 一区二区三区四区在线观看视频| 欧美日韩国产一区二区三区| 在线播放日韩精品| 国内精品久久久久久影视8| 久久久久久高潮国产精品视| 国产精品极品美女在线观看免费| 色综合天天狠天天透天天伊人| 2024亚洲男人天堂| 国产成人久久久| 这里只有精品在线观看| 国产成人高清激情视频在线观看| 国产精品丝袜视频| 精品露脸国产偷人在视频| 日韩久久精品电影| 日本成人在线视频网址| 色综合导航网站| 久久久国产精彩视频美女艺术照福利| 欧美日韩一区二区三区| 欧美国产日韩精品| 日韩成人网免费视频| 国产欧美精品日韩| 精品高清美女精品国产区| 国产精品99一区| 深夜福利日韩在线看| 久久夜精品va视频免费观看| 91精品国产综合久久香蕉| 亚洲一区二区三区四区在线播放| 日韩人体视频一二区| 日韩精品视频免费在线观看| 亚洲aa在线观看| 国产精品久久久久久久久久99| 亚洲精品国产欧美| 狠狠躁夜夜躁人人爽天天天天97| 欧美影院在线播放| 91系列在线观看| 亚洲天堂开心观看| 日韩在线观看视频免费| 国产精品成人av在线| 日韩av在线免播放器| 久久亚洲综合国产精品99麻豆精品福利| 一本大道亚洲视频| 久久久久久久久久国产精品| 精品视频在线观看日韩| zzjj国产精品一区二区| 日韩高清免费观看| 亚洲精品一区久久久久久| 亚洲国产免费av| 91最新在线免费观看| 国产精品嫩草视频| 国产精品一区二区三区成人| 国产精品一区二区三区免费视频| 成人精品视频99在线观看免费| 日韩精品欧美国产精品忘忧草| 亚洲欧美日韩在线高清直播| 欧美激情三级免费| 国内自拍欧美激情| 日本一区二区不卡| 日韩有码在线观看| 日本欧美一二三区| 九九精品视频在线| 国产香蕉97碰碰久久人人| 国产97在线播放| 国内精品一区二区三区| 欧美精品免费看| 色噜噜狠狠色综合网图区| 欧美一性一乱一交一视频| 亚洲欧美中文在线视频| 久久视频在线看| 亚洲乱码国产乱码精品精| 国产精品电影观看| 欧美另类在线播放| 色婷婷亚洲mv天堂mv在影片| 日韩欧美精品网站| 久久影院资源站| 国产精品欧美日韩| 久久久久久久久久久网站| 欧美亚洲成人精品| 国产精品一区二区电影| 91精品国产777在线观看| 日韩av在线影院| 国产精品旅馆在线| 亚洲图中文字幕| 久久久久久综合网天天| 欧洲成人午夜免费大片| 国产精品青草久久久久福利99| 国产精品久久久久999| 国产精品永久免费在线| 久久躁狠狠躁夜夜爽| 久久人91精品久久久久久不卡| 日韩欧美精品中文字幕| 欧美午夜性色大片在线观看| 国产精品网站大全| 国产欧美日韩中文字幕| 精品国产拍在线观看| 欧美高跟鞋交xxxxxhd| 欧美日韩国产综合新一区| 国产精品白丝jk喷水视频一区| 国产视频亚洲精品| 久久色精品视频| 日韩在线精品视频| 久久国产精品视频| 日韩免费观看网站| 亚洲精品中文字幕有码专区| 日韩中文字幕精品视频| 国产精品91久久久| 久久精品一偷一偷国产| 亚洲综合中文字幕68页| 国产日韩精品在线播放| 国产精品高潮呻吟久久av无限| 成人欧美一区二区三区黑人| 日本一区二区在线播放| 69影院欧美专区视频| 久久久精品国产网站| 中文字幕v亚洲ⅴv天堂| 欧美电影免费观看| 欧美成人免费小视频| 亚洲精品中文字幕女同| 不卡av电影院| 亚州精品天堂中文字幕| 亚洲精品国产suv| 久久艹在线视频| 亚洲国产精品中文| 亚洲天堂av图片| 亚洲精品国产精品久久清纯直播| 久久久久国色av免费观看性色|