C++知識點(七)繼承與派生導學
阿新 • • 發佈:2019-01-08
1.單繼承多繼承
派生類繼承的內容:
原有基類成員,新增新的資料成員函式成員,
一般情況下,建構函式和解構函式不被繼承,而C++11中使用using可以繼承
2.派生類訪問許可權:
- 公有繼承:
基類的public、protected、private屬性在派生類中不變
派生類的成員函式:對基類的public、protected能訪問,private不能直接訪問,可通過公有介面訪問
派生類的物件:只能訪問基類public成員
- 私有繼承:
基類的public、protected、private屬性在派生類中都變成private
派生類的成員函式:對基類的public、protected能訪問,private不能直接訪問,可通過公有介面訪問
派生類的物件:不能訪問基類任何成員
- 保護繼承:
基類的public、protected屬性在派生類中都變成protected,
派生類的成員函式:對基類的public、protected能訪問,private不能直接訪問,可通過公有介面訪問
派生類的物件:不能訪問基類任何成員
3.型別轉換:基類與派生類之間
公有派生類物件可以作為基類物件使用
4.派生類的建構函式、複製建構函式、解構函式
- 建構函式
- 從基類繼承建構函式:using B::B;
- 單繼承:
- 派生類名::派生類名(基類形參,派生類形參):基類名(引數表),派生類初始化表{};
- 多繼承:
- 派生類名::派生類名(基類形參,派生類形參):基類名1(引數表1),基類名2(引數表2),派生類初始化表{};
- 多繼承和類組合時的建構函式:
- 派生類名::派生類名(基類形參,派生類形參):基類名1(引數表1),基類名2(引數表2),本類成員(物件成員)派生類初始化表{};
- 呼叫建構函式順序:先基類,後派生類,基本按照宣告定義的順序
- 複製建構函式
- 先呼叫基類複製建構函式,後派生類複製建構函式
- 解構函式
- 先呼叫派生類析構,再呼叫基類析構
- 訪問從基類繼承的成員
- 和派生類同名的成員的基類呼叫,加基類名::限定來訪問
5.虛基類virtual 二義性冗餘
菱形繼承時二義性