由基類到派生類的過程中,在派生類裡如何訪問基類成員,以及派生類物件如何訪問基類成員,是根據派生類在從基類派生時是以什麼方式進行的派生:public、protect或者private。下面說一下在這三種派生方式下成員函式和成員變數的訪問和修改許可權。派生類是指直接派生類!
【**1】12
3456
78910
1112
1314
1516
1718
1920
2122
2324
2526
2728
2930
3132
3334
3536
3738
39class
base
int
basefunpt()
int
basefunpr()
public
:
int
m_npb;
protected
:
int
m_npt;
private
:
int
m_npr;
};
class
cpb:
public
base
int
getpt()
int
getpr()
};
class
cpt:
protected
base
int
getpt()
int
getpr()
};
class
cpr:
private
base
int
getpt()
int
getpr()
};
int
main()
訪問分為:類物件訪問、類內訪問兩種;
對於基類繼承下來的成員的訪問與修改許可權如下:
基類成員訪問許可權(列
)
public
protected
private
派生方式(行)
派生類物件
派生類
類內
派生類
物件
派生類
類內
派生類
物件
派生類
類內
public
可訪/可修
許可權:public
可訪/可修
不可訪/不可修
許可權:protected
可訪/不可修
不可訪/不可修
許可權:private
不可訪/不可修
protected
不可訪/不可修
許可權:protected
可訪/不可修
不可訪/不可修
許可權:private
可訪/不可修
不可訪/不可修
許可權:private
不可訪/不可修
private
不可訪/不可修
許可權:private
可訪/不可修
不可訪/不可修
許可權:private
可訪/不可修
不可訪/不可修
許可權:private
不可訪/不可修
派生類內不管是 public、protected、private 繼承,總是可以訪問基類中的public、protected 成員,基類中的 private 成員永遠不能在派生類內直接訪問,不論通過哪種方式。
派生類物件僅當public派生時,對基類中的public成員有可訪問/可修改的許可權,其他都為不可訪問/不可修改。
用『b』代表public,用't『代表protected,用'r』代表private;bt->t代表基類成員訪問許可權為b,派生方式為t,派生後成員在派生類內的訪問許可權為t;『r'表示可訪問,』w'代表可修改,
『-'表示不可訪問或不可修改,在第一位表示不可訪,在第二位表示不可修;則上表簡化為如下:
訪問許可權變更
派生類物件
派生類類內
訪問許可權變更
派生類物件
派生類類內
訪問許可權變更
派生類物件
派生類類內
bb->b
rwrw
tb->t
--r-
rb->r
----
bt->t
--r-
tt->r
--r-
rt->r
----
br->r
--r-
tr->r
--r-
rr->r
----
當派生類下面還有派生類時,派生類作為基類,許可權更改同上!
來自為知筆記(wiz)
C 學習筆記 二 繼承成員的訪問控制
突然了解到訪問控制符不光能出現在類定義的成員前,還能出現在第二個位置 派生列表中 兩種情況交織起來訪問控制令人迷茫 所以寫個部落格梳理一下,總覺得這個繼承關係跟現實生活中的人際關係其實差不多,所以拿老李一家三代人打個比方 出場人物如下 老李 基類的內部成員函式 老李的財產 房屋 臥室 保險櫃,基類成...
C 類成員訪問控制及繼承的訪問控制
公有型別成員定義了類的外部介面,在類外智慧型訪問類的公有成員 私有成員只能被本類的成員函式訪問,來自外部的任何訪問都是非法的,完全隱藏在類中,保護了資料的安全性 保護型別成員的性質和私有成員性質相似,其差別在於繼承過程中對產生的新類的影響不同,意義在於不想向外部暴露某個函式或者成員變數,但又想讓派生...
C 之 訪問控制與訪問控制的繼承
private 本類函式和友元函式可以訪問。protected 本類函式 友元函式和子類函式可以訪問。public 本類函式 友元函式 子類函式和本類的物件可以訪問。和公有繼承 保護繼承和私有繼承沒有關係,保護繼承和私有繼承影響的是子類的繼承關係。類繼承中的訪問控制 公有繼承 public 保護繼承...