繼承中的訪問級別

2021-10-03 18:22:20 字數 1583 閱讀 1769

繼承的概念之前的文章已經提及了,那麼子類是否可以直接訪問父類的私有成員呢,答案是否定的

例子:

#include

#include

using

namespace std;

class

parent

intvalue()

};class

child

:public parent

}int

main()

結果:

a.cpp: 在成員函式『int child::add(int)』中:

a.cpp:7:7: 錯誤: 『int parent::mv』是私有的

a.cpp:23:6: 錯誤: 在此上下文中

a.cpp:7:7: 錯誤: 『int parent::mv』是私有的

a.cpp:23:11: 錯誤: 在此上下文中

由上可知子類不能直接訪問父類的私有成員,這裡就要引入我們的訪問級別新的訪問級別關鍵字protected

protected的意義

修飾的成員不能被外界直接訪問

修飾的成員可以被子類直接訪問

例子:

#include

#include

using

namespace std;

class

parent

intvalue()

};class

child

:public parent};

intmain()

結果:

sice@sice:~$ ./a.out 

p.mv = 200

可以看出在子類可以直接訪問父類中被protected修飾的成員,然而如果我們在main函式加入以下**就會報錯,因為在protected修飾的成員不能被外界直接訪問

parent p;

p.mv =

100;

定義類時訪問級別的選擇

44 繼承中的訪問級別

外類不能直接訪問類的 private成員 子類不能直接訪問父類的私有成員 include include using namespace std class parent int value class child public parent int main int value class chi...

第44課 繼承中的訪問級別

1.1 根據物件導向的理論 子類擁有父類的一切屬性和行為 子類能夠直接訪問父類的私有成員!1.2 但c 語法規定,外界 不能直接訪問類的private 成員,所以 子類也不能直接訪問父類的私有成員!2.1 物件導向中的訪問級別不只是public和private 2.2 可以定義protected訪問...

第44課 繼承中的訪問級別

子類是否可以直接訪問父類的私有成員?編譯出錯,那如何訪問父類中的非公有成員呢?物件導向中的訪問級別不只是public和private 可以定義protected訪問級別 關鍵字protected的意義 修飾的成員不能被外界直接訪問 修飾的成員可以被子類直接訪問 includeusing namesp...