C++ 類的訪問控制和繼承 及三種繼承方式的理解

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屬性;

總結:繼承方式決定了基類成員在派生類中的可見性,但不影響派生類對基類成員的訪問權限

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章