1 #include 2view code3using
namespace
std;45
classa6
11void show() const
1215 ~a(){}
16};
17class b:virtual
public a //
定義虛基類的用法
18//
子類建構函式必須使用初始化列表(初始化列表在時間效能上比函式體內賦值更有優勢,注意這裡我用的詞是賦值而不是初始化。)
23void show() const
//show函式將父類的show()覆蓋掉,const可以限制當前物件的內容不可改變
2427 ~b(){}
28};
29class c:virtual
publica30
35void show() const
3639 ~c(){}
40};
41class d:public b, publicc42
//首先注意建構函式的寫法,直接或間接繼承虛基類的所有派生類都必須在建構函式的初始化列表裡列出對虛基類的初始化,但是,只有最遠派生類的建構函式才呼叫虛基類的建構函式,也就是說,虛基類的成員(a)只有乙份拷貝
47void show() const
4853 ~d(){}
54};
5556
intmain()
57
虛基類 虛函式和純虛基類
首先看乙個例子 class base class child1 public base class child2 public base void main else p print 函式呼叫的時候,檢視虛表,根據p的位址首先從虛表裡面查詢要呼叫的函式 這裡呼叫child2的print 函式 ret...
虛基類 C ,用法備記
1 虛基類的使用,和為多型而實現的虛函式不同,是為了解決多重繼承的二義性問題。舉例如下 class a class b virtual public a class c virtual public a class d public b,public c 上面這種菱形的繼承體系中,如果沒有virtu...
虛函式和虛擬基類 用法小結
虛繼承 在繼承定義中包含了virtual關鍵字的繼承關係 虛基類 在虛繼承體系中的通過virtual繼承而來的基類 宣告虛基類的一般形式為 class 派生類名 virtual 繼承方式 基類名 需要注意 為了保證虛基類在派生類中只繼承一次,應當在該基類的所有直接派生類中宣告為虛基類。否則仍然會出現...