C C 中的繼承許可權和繼承方式

2021-07-11 22:03:58 字數 2359 閱讀 4593

這個很簡單,就是private都只能通過父類的函式去訪問,其他的都跟隨繼承方式掉級就可以了,用的最多的還是public繼承

c++繼承的一般語法為:

class 派生類名:[繼承方式] 基類名;
繼承方式限定了基類成員在派生類中的訪問許可權,包括 public(公有的)、private(私有的)和 protected(受保護的)。此項是可選的,如果不寫,預設為 private 或 protected。

1) public繼承方式

2) protected繼承方式

3) private繼承方式

由此可見:

private 繼承限制太多,實際開發中很少使用,一般使用 public。
乙個完整的例子:

#include

using

namespace std;

//基類--pelple

class

people

;void people::

setname

(char

*name)

void people::

setage

(int age)

void people::

display

()//派生類--student

class

student

:public people

;student::

student

(char

*name,

int age,

float score)

void student::

display1

()int

main

()

執行結果:

小明的年齡是 15,成績是 90.5

讀者要注意 student 類的建構函式和 display1() 函式。在建構函式中,我們要設定 name、age、score 變數的值,但 name、age 在基類中被宣告為 private,所以在 student 中不可直接訪問,只能借助基類中的成員函式 setname()、setage() 來間接訪問。

在 display1() 函式中,同樣不能訪問 people 類中 private 屬性的成員變數,只能借助 people 類的成員函式來間接訪問。使用 using 關鍵字可以改變基類成員在派生類中的訪問屬性,例如將 public 改為 private,或將 private 改為 public。

using 關鍵字使用示例:

#include

using

namespace std;

class

people

;void people::

say()

class

student

:public people

;void student::

learning

()int

main

()

**中首先定義了基類 people,它包含兩個 protected 屬性的成員變數和乙個 public 屬性的成員函式。定義 student 類時採用 public 繼承方式,people 類中的成員在 student 類中的訪問許可權預設是不變的。

不過,我們使用 using 改變了它們的預設訪問許可權,如**第16~20行所示,將 say() 函式修改為 private 屬性的,是降低訪問許可權,將 name、age 變數修改為 public 屬性的,是提高訪問許可權。

因為 say() 函式是 private 屬性的,所以**第33行會報錯。把該行注釋掉,程式輸出結果為:

我是小明,今年16歲,我學習非常努力,這次考了99.5分!實際開發中,經常會有多級繼承的情況。例如,類a為基類,類b繼承自類a,類c又繼承自類b,那麼類c也是類a的派生類,它們構成了多級繼承的關係。如下圖所示:

多級繼承的規則與上面相同,這裡僅舉例說明。

classa;

classb:

public a

;classc:

protected b

;

各成員在不同類中的訪問屬性如下:if2

jkf3f4mf5

n基類a

共有保護

保護私有

共有派生類b

共有保護

保護不可訪問

共有保護

私有保護派生類c

保護保護

保護不可訪問

保護保護

不可訪問

共有私有

C 繼承許可權和繼承方式

c 繼承的一般語法為 class 派生類名 繼承方式 基類名 繼承方式限定了基類成員在派生類中的訪問許可權,包括 public 公有的 private 私有的 和 protected 受保護的 此項是可選項,如果不寫,預設為 private 成員變數和成員函式預設也是 private 現在我們知道,...

繼承許可權的問題

許可權修飾符 y表示可以訪問,n表示不可以訪問 成員修飾符 類自己相同包 不同包的子類 任意類public 公有的 yy yyprotected 保護 yy yn包 預設 yy nnprivate 私有的 yn nn乙個例子 許可權問題 父類p許可權a public 公有的 bprotected 保...

繼承許可權的問題

許可權修飾符 y表示可以訪問,n表示不可以訪問 成員修飾符 類自己相同包 不同包的子類 任意類public 公有的 yy yyprotected 保護 yy yn包 預設 yy nnprivate 私有的 yn nn乙個例子 許可權問題 父類p許可權 apublic 公有的 bprotected 保...