class Derived : [繼承方式] Base { ... }; // 可選,默認 private
繼承方式限定基類成員在派生類中的最大訪問權限。
| 權限 | 類外訪問 | 派生類訪問 |
|---|---|---|
| public | 是 | 是 |
| protected | 否 | 是 |
| private | 否 | 否 |
| 繼承方式 | 基類 public | 基類 protected | 基類 private |
|---|---|---|---|
| public | public | protected | 不可見 |
| protected | protected | protected | 不可見 |
| private | private | private | 不可見 |
private 成員在派生類永遠不可見,無論繼承方式public/protected;需封裝隱藏 → privateclass People {
public: void setname(), setage(), sethobby(), gethobby();
protected: char* m_name; int m_age;
private: char* m_hobby; // 派生類不可見
};
class Student : public People { // public 繼承:權限保持
protected: float m_score;
public: void setscore();
};
class Pupil : public Student { // public 繼承:權限保持
private: int m_ranking;
public: void display() {
// 可直接訪問:m_name, m_age, m_score
// m_hobby 不可見,必須通過 gethobby()/sethobby()
}
};
class Base {
protected: int m_a, m_b;
public: void show();
};
class Derived : public Base {
public:
using Base::m_a; // protected → public
using Base::m_b; // protected → public
private:
using Base::show; // public → private
};
using Base::member; 在派生類中引入基類成員並指定新權限protected→public)或降級(public→private)private 成員可見性(基類 private 本身不可見)class D { private: Base b; } 更清晰繼承方式(public/protected/private)決定基類成員在派生類中的最大訪問權限上限。public 保持原權限,protected 將 public 降為 protected,private 全降為 private。基類 private 永遠不可見。現代 C++ 實務:幾乎只用 public 繼承,配合 protected 成員設計給派生類用,private 封裝細節,using 僅在極少數需改權限時使用。