首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 三種繼承方式深度解析:公有、私有、保護繼承

     編輯:關於C++

核心規則總結

繼承方式基類 public基類 protected基類 private派生類對象訪問
公有繼承publicprotected不可見僅 public
私有繼承privateprivate不可見全部不可見
保護繼承protectedprotected不可見全部不可見

口訣記憶法

  • 公有繼承:保持原狀
  • 私有繼承:均變私有
  • 保護繼承:公有、保護變保護

共性結論

  1. 基類 private 成員在派生類中永不可見
  2. 派生類成員訪問權限相同:只能訪問基類 public/protected
  3. 對象訪問:只有公有繼承允許訪問基類 public 成員
  4. 本質是權限遞減:public > protected > private

實戰驗證代碼

class O {
private: void F1() { cout << "F1 private\n"; }
public: void F2() { cout << "F2 public\n"; }
protected: void F3() { cout << "F3 protected\n"; }
};

class P : protected O {  // 保護繼承
public: void test() { F2(); F3(); /* F1(); // error */ }
};

class Q : public O {     // 公有繼承
public: void test() { F2(); F3(); /* F1(); // error */ }
};

int main() {
    P p; Q q;
    p.test();  // 輸出 F2 public, F3 protected
    q.test();  // 輸出 F2 public, F3 protected
    q.F2();    // OK: 公有繼承對象可訪問 public
    // p.F2();  // Error: 保護繼承對象不可訪問
}

軟件設計師考試真題解析

已知類 O 有 private F1、public F2、protected F3。P 保護繼承 O,Q 公有繼承 O。

  • F1:只有類 O 內可訪問(選 B)
  • F2:O、Q 對象可訪問,P 對象不可訪問(選 C)
  • F3:所有對象均不可訪問(選 B)

成員變量同理

繼承規則對成員函數和成員變量完全一致,代碼驗證見文中完整示例。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved