什麼是虛基類
就是他的派生類有兩個或者以上的派生類
通過虛繼承,這樣就可以避免派生類有多個基類的副本
從而減少記憶體消耗
關於繼承可以看我的這一篇新增鏈結描述
#include
#include
using
namespace std;
class
person;}
;class
partymember
:virtual person;}
;class
teacher
:virtual person
; string profession;}
;class
teacherpm
:public partymember,
public teacher
;int
main()
;// 由於partymember teacher 都是從虛基類派生的所以類物件的記憶體就每個就要+4 140+4+4-28=120 加兩個派生類虛繼承的記憶體-去乙個基類副本記憶體
cout <<
sizeof
(s)<< endl;
// 普通繼承 值是 28 28 56 84 140 虛繼承值是 28 28 60 88 120 避免派生類有多個基類副本
cout <<
sizeof
(p)<<
'\t'
<<
sizeof
(pm)
<<
'\t'
<<
sizeof
(t)<<
'\t'
<<
sizeof
(tpm)
<< endl;
while
(true);
return0;
}
C 的虛基類
虛基類 當在多條繼承路徑上有乙個公共的基類,在這些路徑中的某幾條匯合處,這個公共的基類就會產生多個例項 或多個副本 若只想儲存這個基類的乙個例項,可以將這個公共基類說明為 虛基類 虛基類.在繼承中產生歧義的原因有可能基類是繼承類繼承了基類多次,從而產生了多個拷貝,即不止一次的通過多個路徑繼承類在記憶...
虛基類 虛函式和純虛基類
首先看乙個例子 class base class child1 public base class child2 public base void main else p print 函式呼叫的時候,檢視虛表,根據p的位址首先從虛表裡面查詢要呼叫的函式 這裡呼叫child2的print 函式 ret...
C 抽象基類與虛基類(C primer)
c primer plus p508,抽象基類 c primer plus p556,虛基類 抽象基類是解決如下問題 加入現在需要開發乙個圖形類,表示圓與橢圓 注意,圓是一種特殊的橢圓 所以初步考慮從橢圓類中派生出圓類。但是現在遇到乙個問題,圓與橢圓的面積計算公式不同,所以需要建立乙個abc,抽象出...