繼承的概念之前的文章已經提及了,那麼子類是否可以直接訪問父類的私有成員呢,答案是否定的
例子:
#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...