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

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

關于C++中虛擬繼承的一些總結分析

2020-01-26 15:54:21
字體:
來源:轉載
供稿:網友

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 關鍵字。此時,基類的函數被隱藏(注意別與覆蓋混淆)。

小結:說白了就是如果派生類和基類的函數名和參數都相同,屬于覆蓋,這是可以理解的吧,完全一樣當然要覆蓋了;如果只是函數名相同,參數并不相同,則屬于隱藏。

4.4 三種情況怎么執行:
4.4.1 重載:看參數。
4.4.2 隱藏:用什么就調用什么。
4.4.3 覆蓋:調用派生類。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美视频免费在线观看| 国产亚洲综合久久| 在线观看欧美日韩国产| 在线观看久久av| 精品国偷自产在线视频99| 精品少妇一区二区30p| 日韩大陆欧美高清视频区| 精品视频在线播放| 成人国产精品日本在线| 国产精品黄色av| 国产一区二区欧美日韩| 国产视频丨精品|在线观看| 欧美激情图片区| 日韩欧美极品在线观看| 97久久精品人搡人人玩| 国产精品一区久久久| 美女视频黄免费的亚洲男人天堂| 中文字幕亚洲欧美| 国产亚洲精品日韩| 精品久久国产精品| 在线观看91久久久久久| 日日狠狠久久偷偷四色综合免费| 亚洲精品国精品久久99热一| 久久亚洲精品中文字幕冲田杏梨| 亚洲自拍偷拍色图| 国产精品久久久久999| zzijzzij亚洲日本成熟少妇| 日韩精品在线免费观看| 日韩av在线免费看| 国产一区二区三区在线| 久久噜噜噜精品国产亚洲综合| 国产精品第3页| 亚洲色图色老头| 大胆人体色综合| 91精品视频专区| 欧美一区二区大胆人体摄影专业网站| 欧美性猛交xxxxx水多| 日韩大陆欧美高清视频区| 久久精品久久久久久国产 免费| 欧美疯狂xxxx大交乱88av| 中文字幕精品国产| 国产亚洲在线播放| 精品久久久久久久久国产字幕| 欧美在线视频一区二区| 精品久久久999| 91久久久久久久久| 欧美午夜久久久| 国产精选久久久久久| 欧美午夜无遮挡| 亚洲电影免费观看高清完整版在线| 91在线观看免费高清| www.亚洲免费视频| 欧美黄色片免费观看| 色婷婷亚洲mv天堂mv在影片| 欧美日韩性视频在线| 91精品国产91久久久久福利| 亚洲欧美中文另类| 97激碰免费视频| 欧美网站在线观看| 久久精品青青大伊人av| 成人午夜高潮视频| 欧美日韩精品在线| 一二美女精品欧洲| 日韩在线播放av| 亚洲欧美日韩精品| 国产欧美日韩免费看aⅴ视频| 国产精品电影久久久久电影网| 九九热精品视频| 久久久精品一区二区三区| 精品无人区太爽高潮在线播放| 91超碰中文字幕久久精品| 久久综合九色九九| 欧美xxxx18性欧美| 欧洲日本亚洲国产区| 九九综合九九综合| 欧美一级电影久久| 久久免费高清视频| 成人h视频在线观看播放| 在线精品国产成人综合| 国产精品视频免费在线观看| 亚洲第一区第一页| 欧美精品在线视频观看| 日韩有码在线播放| 日韩人体视频一二区| 欧美日韩免费区域视频在线观看| 97视频在线看| 午夜精品久久久99热福利| 国产日韩精品视频| 国产亚洲综合久久| 日韩视频亚洲视频| 理论片在线不卡免费观看| 精品国产成人av| 亚洲三级免费看| 亚洲欧美综合v| 日韩在线观看网站| 国产精品爽黄69天堂a| 日韩欧美在线字幕| 国产精品69av| 国产精品极品美女粉嫩高清在线| 日韩最新中文字幕电影免费看| 日韩精品电影网| 97国产精品视频人人做人人爱| 国产午夜精品一区二区三区| 成人午夜在线影院| 亚洲精品福利免费在线观看| 国产日产亚洲精品| 亚洲成人激情视频| 亚洲黄在线观看| 国产精品成人久久久久| 久久久999精品视频| 欧美美最猛性xxxxxx| 久久韩国免费视频| 日本精品久久电影| 成人性生交大片免费看视频直播| 欧美日韩裸体免费视频| 精品一区二区三区四区在线| 国产精品国产三级国产aⅴ浪潮| 久久久黄色av| 国产精品露脸av在线| 日韩av电影手机在线观看| 亚洲综合精品伊人久久| 日韩高清电影免费观看完整版| 一区二区三区回区在观看免费视频| 欧美一区深夜视频| 91精品国产综合久久久久久久久| 中文字幕9999| 日韩不卡在线观看| 2020久久国产精品| 国产精品27p| 2019国产精品自在线拍国产不卡| 亚洲va欧美va国产综合剧情| 亚洲自拍偷拍在线| 中文字幕欧美精品日韩中文字幕| 最近2019中文字幕在线高清| 欧美一级淫片播放口| 国产精品精品一区二区三区午夜版| 91亚洲精品久久久久久久久久久久| 91高清视频免费观看| 精品国产欧美成人夜夜嗨| 日韩精品高清在线观看| 欧美成年人在线观看| 日韩欧美精品免费在线| 国产精品黄色影片导航在线观看| 揄拍成人国产精品视频| …久久精品99久久香蕉国产| 精品久久久久久中文字幕一区奶水| 欧美国产日韩视频| 狠狠久久亚洲欧美专区| 91高清免费在线观看| 国产精品自产拍在线观看中文| 久久久国产精品免费| 欧美激情在线狂野欧美精品| 日韩亚洲欧美中文在线| 午夜精品久久久久久99热软件| 久久成人国产精品| 国产剧情久久久久久| 17婷婷久久www| 亚洲午夜女主播在线直播| 欧美性感美女h网站在线观看免费| 成人免费观看网址| 久热精品在线视频| 亚洲视频日韩精品| 久久综合伊人77777| 日韩视频在线免费|