c 的類 虛基類 六

2021-10-06 14:41:35 字數 995 閱讀 6526

什麼是虛基類

就是他的派生類有兩個或者以上的派生類

通過虛繼承,這樣就可以避免派生類有多個基類的副本

從而減少記憶體消耗

關於繼承可以看我的這一篇新增鏈結描述

#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,抽象出...