1. 程式人生 > >C++知識點(七)繼承與派生導學

C++知識點(七)繼承與派生導學

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 二義性冗餘

  菱形繼承時二義性