突然了解到訪問控制符不光能出現在類定義的成員前,還能出現在第二個位置(派生列表中),兩種情況交織起來訪問控制令人迷茫
所以寫個部落格梳理一下,總覺得這個繼承關係跟現實生活中的人際關係其實差不多,所以拿老李一家三代人打個比方
出場人物如下:
老李:基類的內部成員函式
老李的財產:房屋、臥室、保險櫃,基類成員,分別以public,protected,private修飾
李媽:老李的妻子,基類的友元
大李:派生類的成員函式
李嬸:大李的妻子,派生類的友元
大王:大李的上司,派生類使用者(使用者是指程式設計中使用該類物件的人)
小李:派生類的派生類的成員函式
現在在不考慮派生訪問說明符的情況下,對老李財產也就是基類成員訪問情況如下:
祖輩財產
老李/李媽
大李/李嬸
小李大王房屋√
√√√臥室
√√√保險櫃
√也比較符合現實實際,妻子就相當於自己,所有東西都可以跟妻子共享,因為家業是倆人一起掙下的
兒子、孫子雖然親,臥室隨便進,但是也有點養老的東西不能讓他們隨便動
至於兒子上司這樣的算是認識,客廳見
將名詞轉化一下,得到繼承體系中不考慮派生訪問說明符的訪問情況
基類成員
基類成員/友元
派生類成員/友元
派生類的派生類
派生類使用者
public√√
√√protected√√
√private
√有一天呢,大李偶然撞見大王跟小李在合謀圖老李的財產,很生氣,就不准讓他倆進入老李家,他的想法很簡單,老李的房屋和臥室都歸我繼承,我把著門不准你們進入
大李: private 老李
這樣一來我們跟別人介紹大李時就可以說, 他是老李的兒子,他從老李那繼承的東西從不跟別人分享,連他兒子小李也不例外。
祖輩財產
老李/李媽
大李/李嬸
小李大王房屋√
√臥室√√
保險櫃√
基類成員
基類成員/友元
派生類成員/友元
派生類的派生類
派生類使用者
public√√
protected√√
private
√隨著時間流逝,大李看兒子好像浪子回頭洗心革面重新做人了,就打算收回成命,但是還不打算諒解上級,工作上雖然得聽他使喚,但是私底下就得硬氣點。
大李: protect 老李
祖輩財產
老李/李媽
大李/李嬸
小李大王房屋√
√√臥室√
√√保險櫃√
基類成員
基類成員/友元
派生類成員/友元
派生類的派生類
派生類使用者
public√√
√protected√√
√private
√最後,大李更老了,許多事也看開了,跟上級握手言和了。
大李: public 老李
祖輩財產
老李/李媽
大李/李嬸
小李大王房屋√
√√√臥室
√√√保險櫃√
基類成員
基類成員/友元
派生類成員/友元
派生類的派生類
派生類使用者
public√√
√√protected√√
√private
√由此,我們可以看出,基類內部成員的訪問控制符僅僅能影響其直接派生類,而派生類的派生訪問說明符影響其使用者以及派生類的派生類
通俗講,爺爺輩能決定留多少自己的東西給父輩,父輩能決定爺爺輩的東西留給多少給孫子以及他的上級領導(拍馬屁用)。
在繼承體系中,對於基類中繼承成員的訪問情況受到兩個因素控制:
基類中的成員訪問說明符; 派生類定義時的派生說明符;
前者影響直接派生類內部成員方法的訪問情況,後者影響自己(直接派生類)的使用者以及派生類的派生類
2.友元與自己類的內部成員方法有同樣的訪問許可權,但是友元關係不能繼承
C 學習之繼承中的成員訪問控制
由基類到派生類的過程中,在派生類裡如何訪問基類成員,以及派生類物件如何訪問基類成員,是根據派生類在從基類派生時是以什麼方式進行的派生 public protect或者private。下面說一下在這三種派生方式下成員函式和成員變數的訪問和修改許可權。派生類是指直接派生類!1 12 3456 78910...
C 類成員訪問控制及繼承的訪問控制
公有型別成員定義了類的外部介面,在類外智慧型訪問類的公有成員 私有成員只能被本類的成員函式訪問,來自外部的任何訪問都是非法的,完全隱藏在類中,保護了資料的安全性 保護型別成員的性質和私有成員性質相似,其差別在於繼承過程中對產生的新類的影響不同,意義在於不想向外部暴露某個函式或者成員變數,但又想讓派生...
c 學習 成員的訪問控制說明
定義類時,雖然public private 或protect的成員的次序任意。但在實際程式設計中,更常見把具有相同的訪問控制屬性的成員集中在一起寫,且每一種成員訪問限定符在類體中出現一次,且按照public protected,private 順序組織,形成訪問許可權層次分明的結構。盡量將類的成員函...