1.隱藏 派生類中定義和基類中一樣的成員變量或成員函數
結果是: 派生類對象直接調用的是派生類裏面的成員,基類的成員被隱藏
要想通過派生類對象調用基類成員也可以,在成員前面加上類名:: soldier.Person::eat();
2.is a
派生類對象可以給基類對象賦值,或函數形參時,本來應該傳基類對象,傳派生類對象也行。派生類比基類多的成員自動丟棄,其他賦值。
不管繼承了多少次,只要存在繼承關係的(包括間接),派生類和基類都是is a的關係
3.多重繼承和多繼承
4.虛繼承
繼承前面加virtual 菱形繼承中避免間接繼承兩次的基類後,有兩份基類成員,造成數據冗餘
不加virtual的話就有兩份數據,加的話只有一份,且不能通過虛繼承的類改變基類成員的值。
5
1.如果子類從父類繼承時使用的繼承限定符是public,那麼
(1)父類的public成員成爲子類的public成員,允許類以外的代碼訪問這些成員;
(2)父類的private成員仍舊是父類的private成員,子類成員不可以訪問這些成員;
(3)父類的protected成員成爲子類的protected成員,只允許子類成員訪問;
2.如果子類從父類繼承時使用的繼承限定符是private,那麼
(1)父類的public成員成爲子類的private成員,只允許子類成員訪問;
(2)父類的private成員仍舊是父類的private成員,子類成員不可以訪問這些成員;
(3)父類的protected成員成爲子類的private成員,只允許子類成員訪問;
3.如果子類從父類繼承時使用的繼承限定符是protected,那麼
(1)父類的public成員成爲子類的protected成員,只允許子類成員訪問;
(2)父類的private成員仍舊是父類的private成員,子類成員不可以訪問這些成員;
(3)父類的public成員成爲子類的protected成員,只允許子類成員訪問;
public protected private限定符:
public內部直接用,外部可以調用
protected內部直接用,外部不能用,子類可以直接用
private 內部直接用,外部和子類不能用