C++一個主要目標是提供代碼重用,類繼承是實現該目標的重要途徑之一。從一個類派生出另一個類時,原始類稱為基類,繼承類稱為派生類。
1. 派生類對象存儲了基類的數據成員
2. 派生類對象可以使用基類的方法
關於三種繼承方式的成員訪問權限:
1. 基類的 private 成員在派生類中是不能被訪問的,如果基類成員不想在類外直接被訪問,但需要在派生類中能訪問,就定義為 protected 。可以看出保護成員限定符是因繼承才出現的。
2. public繼承是一個接口繼承,保持is-a原則,每個父類可用的成員對子類也可用,因為每個子類對象也都是一個父類對象。
3. protetced/private繼承是一個實現繼承,基類的部分成員並非完全成為子類接口的一部分,是 has-a 的關系原則,所以非特殊情況下不會使用這兩種繼承關系,在絕大多數的場景下使用的都是公有繼承。
4. 不管是哪種繼承方式,在派生類內部都可以訪問基類的公有成員和保護成員,基類的私有成員存在但是在子類中不可見(不能訪問)。
5. 使用關鍵字class時默認的繼承方式是private,使用struct時默認的繼承方式是public,不過最好顯示的寫出繼承方式。
6. 在實際運用中一般使用都是public繼承,極少場景下才會使用protetced/private繼承
參考資料: