修改方法的特徵
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 ...