1. 類中的訪問說明符
class Parent{
public:
...
private:
...
protected:
...
};
訪問說明符 |
public |
private |
protected |
類外用戶 |
√ |
× |
× |
類內成員 |
√ |
√ |
√ |
派生類成員 |
√ |
× |
√ |
友元 |
√ |
√ |
√ |
2. 派生類的繼承方式說明符
class Child : public Parent {};
class Child : protected Parent {};
class Child : private Parent {};
public繼承方式:
- 基類中的public成員在派生類中仍爲public;
- 基類中的protected成員在派生類中仍爲protected;
- 基類中的private成員在派生類中被繼承下來,但是不可訪問;
protected繼承方式:
- 基類中的public成員在派生類中變爲protected屬性;
- 基類中的protected成員在派生類中變爲protected屬性;
- 基類中的private成員在派生類中被繼承下來,但是仍不可訪問;
private繼承方式:
- 基類中的public成員在派生類中變爲private屬性;
- 基類中的protected成員在派生類中變爲private屬性;
- 基類中的private成員在派生類中被繼承下來,但是仍不可訪問;
可以看出,三種繼承方式不會影響派生類成員對基類成員的訪問權限,無論哪種繼承方式,派生類中仍然只能訪問基類中的public和protected成員,不能訪問private成員;
繼承方式影響的是 類實例對象對類成員的訪問權限:
- 例如,如果派生類的繼承方式是private,則基類對象可以訪問的public屬性的類成員,派生類對象便不能訪問了,因爲派生類中該對象變成了private屬性;
總結:繼承方式決定了基類成員在派生類中的可見性,但不影響派生類對基類成員的訪問權限