C 中虛基類的作用

2021-05-28 14:39:06 字數 827 閱讀 3654

父類:

class cparent 

;

繼承類的宣告比較特別:

**中virtual的作用是

說明這個cparent是cchild 的虛基類

class cchild : virtual public cparent 

虛基類是指:class subclass : virtual public baseclass 中以virtual宣告的基類!!由於c++支援多重繼承,所以對於乙個派生類中有幾個直接父類,而幾個直接父類中有幾個可能分別繼承自某乙個基類(就是父類的父類),這樣在構造最終派生類時,會出現最終派生類中含有多個同乙個基類的情況,就會產生二義性的問題(不知道該呼叫哪個基類的成員變數和函式),為解決此問題,需要使用虛基類,即只對此基類生成一塊記憶體區域,這樣最終派生類中就只會含有乙個基類了

典型的需要用虛基類的情況如下:

a /    \

b    c

\    /

d 其中d繼承自bc,bc分別繼承自a,所以a要分別被bc虛擬繼承

class a

}; class b:virtual public a;

class c:virtual public a;

class d:public b,public c;

這樣在d構造出來後,它的儲存區域中只有乙個a,不會有二義性問題

比如:d d=new d;

此時若使用d.printa();不會有問題;但若b和c不是虛繼承自a,就會有二義性問題 

C 虛基類的作用

虛基類的作用 當乙個基類被宣告為虛基類後,即使它成為了多繼承鏈路上的公共基類,最後的派生類中也只有它的乙個備份。例如 class cbase class cderive1 virtual public cbase class cderive2 virtual public cbase class c...

虛基類的作用

1 當在多條繼承路徑上有乙個公共的基類,在這些路徑的某幾條匯合處,這個公共的基類就會產生多個例項 或多個副本 若只想儲存這個基類的乙個例項,可以將這個公共基類說明為虛基類 class cbase class childa1 virtual public cbase class childa2 vir...

C 中的虛基類

我們知道類具有三大特性 封裝 繼承和多型。繼承,可以在現有類的功能上進一步擴充套件,而無需在構建新的類。但有時多重繼承會使結構變得複雜,不注意的話還會引起二義性。其中比較典型的乙個案例 class a class b public a class c public a class d public ...