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

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

總結分析C++中虛擬繼承的執行方式

2020-02-24 14:29:47
字體:
來源:轉載
供稿:網友

虛擬繼承在一般應用程序中很少被使用到,因此經常會被忽略,其實這個主要是因為在C++中,不推薦多繼承,那么總結分析C++中虛擬繼承的執行方式大家了解清楚了嗎?下面一起跟著武林技術頻道來了解。

1.為什么要引入虛擬繼承
虛擬繼承是多重繼承中特有的概念。虛擬基類是為解決多重繼承而出現的。如:類D繼承自類B1、B2,而類B1、B2都繼承自類A,因此在類D中兩次出現類A中的變量和函數。為了節省內存空間,可以將B1、B2對A的繼承定義為虛擬繼承,而A就成了虛擬基類。實現的代碼如下:

class A
class B1:public virtual A;
class B2:public virtual A;
class D:public B1,public B2;

虛擬繼承在一般的應用中很少用到,所以也往往被忽視,這也主要是因為在C++中,多重繼承是不推薦的,也并不常用,而一旦離開了多重繼承,虛擬繼承就完全失去了存在的必要因為這樣只會降低效率和占用更多的空間。

2.引入虛繼承和直接繼承會有什么區別呢
由于有了間接性和共享性兩個特征,所以決定了虛繼承體系下的對象在訪問時必然會在時間和空間上與一般情況有較大不同。

2.1時間:在通過繼承類對象訪問虛基類對象中的成員(包括數據成員和函數成員)時,都必須通過某種間接引用來完成,這樣會增加引用尋址時間(就和虛函數一樣),其實就是調整this指針以指向虛基類對象,只不過這個調整是運行時間接完成的。

2.2空間:由于共享所以不必要在對象內存中保存多份虛基類子對象的拷貝,這樣較之多繼承節省空間。虛擬繼承與普通繼承不同的是,虛擬繼承可以防止出現diamond繼承時,一個派生類中同時出現了兩個基類的子對象。也就是說,為了保證這一點,在虛擬繼承情況下,基類子對象的布局是不同于普通繼承的。因此,它需要多出一個指向基類子對象的指針。

3.筆試,面試中??嫉腃++虛擬繼承的知識點

?

第一種情況:      第二種情況:   ? 第三種情況       第四種情況:
class a        ??? class a        class a         class a
{         ????????? {           {            {
??? virtual void func();  virtual void func(); virtual void func();   virtual void func();
};           ? };          char x;          char x;
class b:public virtual a?? class b :public a   };           ? };
{           ? {          ? class b:public virtual a  class b:public a
??? virtual void foo();  virtual void foo();  {             {
};            };           virtual void foo();    virtual void foo();


如果對這四種情況分別求sizeof(a),? sizeof(b)。結果是什么樣的呢?下面是輸出結果:(在vc6.0中運行)

?

第一種:4,12
第二種:4,4
第三種:8,16
第四種:8,8

想想這是為什么呢?

因為每個存在虛函數的類都要有一個4字節的指針指向自己的虛函數表,所以每種情況的類a所占的字節數應該是沒有什么問題的,那么類b的字節數怎么算呢?看“第一種”和“第三種”情況采用的是虛繼承,那么這時候就要有這樣的一個指針vptr_b_a,這個指針叫虛類指針,也是四個字節;還要包括類a的字節數,所以類b的字節數就求出來了。而“第二種”和“第四種”情況則不包括vptr_b_a這個指針,這回應該木有問題了吧。

4.c++重載、覆蓋、隱藏的區別和執行方式
既然說到了繼承的問題,那么不妨討論一下經常提到的重載,覆蓋和隱藏

4.1成員函數被重載的特征
(1)相同的范圍(在同一個類中);
(2)函數名字相同;
(3)參數不同;
(4)virtual 關鍵字可有可無。

4.2“覆蓋”是指派生類函數覆蓋基類函數,特征是:
(1)不同的范圍(分別位于派生類與基類);
(2)函數名字相同;
(3)參數相同;
(4)基類函數必須有virtual 關鍵字。

4.3“隱藏”是指派生類的函數屏蔽了與其同名的基類函數,特征是:
(1)如果派生類的函數與基類的函數同名,但是參數不同,此時,不論有無virtual關鍵字,基類的函數將被隱藏(注意別與重載混淆)。

(2)如果派生類的函數與基類的函數同名,但是參數相同,但是基類函數沒有virtual 關鍵字。此時,基類的函數被隱藏(注意別與覆蓋混淆)。

以上就是武林技術小編給朋友們帶來的總結分析C++中虛擬繼承的執行方式,簡單地說,如果派生類和基類的函數名和參數相同并且屬于覆蓋范圍,那么可以理解,它們應該完全相同地覆蓋;如果只有函數名相同并且參數不相同,那么它們就屬于隱藏。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久热99视频在线观看| 富二代精品短视频| 青青精品视频播放| 国产成人综合精品在线| 毛片精品免费在线观看| 成人国产精品av| 亚洲美女性视频| 992tv在线成人免费观看| 久久99热这里只有精品国产| 亚洲色图综合网| 亚洲精品乱码久久久久久按摩观| 国产精品视频免费观看www| 欧美刺激性大交免费视频| 欧美黄色成人网| 日本欧美精品在线| 成人黄色免费看| 欧美日韩中文字幕在线| 成人福利在线观看| 日韩不卡在线观看| 狠狠爱在线视频一区| 国产ts人妖一区二区三区| 久久久久久国产| 欧美性猛交xxxx免费看| 国产精品扒开腿做| 亚洲精品综合久久中文字幕| 伊人久久久久久久久久久久久| 亚洲男人天堂视频| 57pao成人国产永久免费| 国产亚洲aⅴaaaaaa毛片| 日韩黄色高清视频| 最近的2019中文字幕免费一页| 精品视频久久久| 久久天天躁夜夜躁狠狠躁2022| 国产精品普通话| 欧美在线一级va免费观看| 久久69精品久久久久久久电影好| 8090理伦午夜在线电影| 亚洲欧美成人网| 91久久精品国产91久久| 97人人爽人人喊人人模波多| www.日韩av.com| 欧美亚洲激情视频| 成人性生交大片免费看小说| 久久亚洲精品小早川怜子66| 日韩高清av一区二区三区| 欧美日韩xxx| 国产精品入口免费视频一| 日韩精品中文字幕视频在线| 欧美成人在线免费视频| 久久久久一本一区二区青青蜜月| 国产精品亚洲第一区| 青青草原成人在线视频| 国产噜噜噜噜久久久久久久久| 久久琪琪电影院| 欧美激情视频给我| 欧美成人亚洲成人日韩成人| 永久免费看mv网站入口亚洲| 国产精品偷伦一区二区| 欧美激情视频网址| 国产成人亚洲综合91精品| 黑人狂躁日本妞一区二区三区| 色诱女教师一区二区三区| 国产精品欧美亚洲777777| 成人午夜激情免费视频| 日韩免费高清在线观看| 亚洲性69xxxbbb| 最近2019年中文视频免费在线观看| 亚州av一区二区| 亚洲春色另类小说| 欧美成人黄色小视频| 久操成人在线视频| 国产精品一二三视频| 久久韩剧网电视剧| www.午夜精品| 高清一区二区三区四区五区| 欧美一二三视频| 日韩精品欧美激情| 91九色视频导航| 欧美激情精品久久久久久蜜臀| 久久久成人的性感天堂| 亚洲欧洲视频在线| 日韩va亚洲va欧洲va国产| 久久精品成人欧美大片| 国产精品夜间视频香蕉| 久久久国产精彩视频美女艺术照福利| 高潮白浆女日韩av免费看| 亚洲日韩第一页| 亚洲福利小视频| 91九色蝌蚪国产| 91免费的视频在线播放| 在线免费观看羞羞视频一区二区| www.亚洲人.com| 中文字幕av一区中文字幕天堂| 午夜精品一区二区三区在线播放| 91欧美激情另类亚洲| 日韩大陆欧美高清视频区| 亚洲第一在线视频| 欧美一区在线直播| 在线中文字幕日韩| 国产精品亚洲精品| 国产精品爽爽ⅴa在线观看| 久久精品99久久香蕉国产色戒| 成人精品久久久| 欧美性极品xxxx做受| 97精品国产97久久久久久免费| 国产亚洲精品美女久久久| 97精品一区二区视频在线观看| 4438全国成人免费| 亚洲色无码播放| 91精品国产色综合久久不卡98口| 亚洲精品网站在线播放gif| 日韩一中文字幕| 欧美日韩一区二区精品| 亚洲午夜av久久乱码| 久久av在线看| 色妞久久福利网| 亚洲欧美日韩精品久久亚洲区| 欧美高清视频在线播放| 亚洲欧美制服另类日韩| 亚洲第一精品电影| 亚洲色图欧美制服丝袜另类第一页| 久久99青青精品免费观看| 一区二区亚洲精品国产| 国产欧美日韩精品在线观看| 久久琪琪电影院| 国产精品jizz在线观看麻豆| 欧美精品一区二区三区国产精品| 亚洲精品456在线播放狼人| 国产一区二区三区网站| 国产精品美女久久久免费| 国产99视频在线观看| 日韩高清av一区二区三区| 欧美激情精品久久久久久蜜臀| 久久国产精品免费视频| 日韩av成人在线观看| 2019中文字幕在线免费观看| www.日韩欧美| 亚洲japanese制服美女| 国产91久久婷婷一区二区| 这里只有精品在线观看| 亚洲电影第1页| 日韩精品高清视频| 国产精品免费久久久久影院| 亚洲综合日韩在线| 久热国产精品视频| 91精品国产综合久久男男| 97精品在线观看| 国产一区二区免费| xvideos成人免费中文版| 亚洲精品一区二区在线| 国产精品免费电影| 91精品在线一区| 国产不卡在线观看| 精品人伦一区二区三区蜜桃免费| 色婷婷综合久久久久| 久久久亚洲福利精品午夜| 亚洲午夜激情免费视频| 久久中文字幕一区| xvideos成人免费中文版| 亚洲国产欧美一区二区三区同亚洲| 91免费国产网站| 欧美一区在线直播| 久久久久久久网站| 色天天综合狠狠色|