揭秘繼承技術之虛函式(二)

2022-08-12 02:24:17 字數 821 閱讀 8582

修改方法的特徵

1.修改方法的返回值型別

如果原始方法的返回值型別是某個類的指標或引用,重寫的方法可以將返回值改變為子類的指標或引用。這個叫協變返回。(我的理解是:子類「是乙個「父類)

不能將返回值型別修改為完全不相干的型別。

2.如果在子類中使用父類虛方法的名稱,但引數與父類中同名方法不同,那麼這不是對父類方法的重寫而是建立了乙個新方法。原始的方法將被隱藏,子類無法呼叫。

可用using關鍵字顯式地在子類中包含父類方法。

靜態方法無法被繼承。

當指定名稱及一組引數重寫某個方法時,編譯器將隱式地隱藏父類中所有同名方法的其他例項。

c++中根據描述物件的表示式繫結預設引數,而不是根據實際物件型別繫結引數。

方法會繼承而預設引數不會被「繼承」:使用指向子類物件的父類指標呼叫的是子類重寫的方法,而預設引數卻是父類中的預設引數。

1 #include 2

3using

namespace

std;45

6class

super 710

virtual

void

get(int i = 1)

11 ~super(){}

12};

1314

class sub :public

super

1518

void

get(int i = 2)

19 ~sub(){}

20};

2122

intmain()

23

執行結果:

虛函式 虛繼承

include using namespace std class a class b public a class c public b int main 結果是 4,4,4 為什麼?一,在private,protect,public的實際繼承中,派生類和基類擁有相同的虛函式表。但如果是虛繼承,會...

虛函式,虛繼承

1 空類,空類單繼承,空類多繼承的sizeof include using namespace std class base1 class base2 class derived1 public base1 class derived2 public base1,public base2 int m...

虛繼承 虛函式

1.虛繼承簡單的說就是如果有兩個類都繼承了同乙個基類 a 那麼,如果有第三個類又繼承了這兩個類,第三個類就會出現有 兩個基類 a 的情況,虛繼承就能避免這種情況。從實現 來看 普通繼承 普通繼承 沒有使用虛基類 基類a class a class b public a class c public ...