c++類的成員分為三種屬性分別是公有、保護、私有。三種屬性控制著成員的訪問控制許可權。
首先講公有成員。公有成員是其類對外部的介面,任何外部函式都可以訪問公有資料或者函式。
其次是保護成員。保護成員是非派生類的外部函式無法訪問保護資料或者函式,對於此類下的派生類可以訪問到此類的保護資料或者函式。
最後將私有成員。私有成員只能是類內的函式訪問到其私有資料或者函式。
我之所以把它們按照這樣的順序講述,是因為我感覺它們有著控制許可權遞增的趨勢。控制力度是私有》保護》公有。
上述規則在任何基類以及派生類都是適用的。
下面講述公有、保護、私有繼承派生。
公有繼承:基類中的成員在派生類中的屬性都不變,基類的私有成員在派生類中無法訪問,基類的保護成員在派生類外其他函式無法訪問,基類的共有成員仍是派生類的介面,均可訪問。
保護繼承:基類中的公有成員以及保護成員在派生類中的屬性均為保護成員,即只能在類以及派生類中訪問,其他外部函式無法訪問。基類的私有成員在派生類中依舊無法訪問。
私有繼承:基類中的公有成員以及保護成員在派生類中的屬性均為私有成員,即只能在類中訪問,其他外部函式以及派生類中均午飯訪問。基類的私有成員也無法在派生類中訪問。
下面在vs下採用**的形式深入的理解一下三種屬性以及三種繼承的含義。
對基類a三種屬性成員的訪問。
#include//基類a
class a;//construtor
a(int b, int o, int i) :anum_pub(b), anum_pro(o), anum_pri(i){};//construtor with
void fun()
public:
int anum_pub;
protected:
int anum_pro;
private:
int anum_pri;
};void main()
保護成員以及私有成員在外部就無法訪問
派生類b公有繼承基類a
#include//基類a
class a;//construtor
a(int b, int o, int i) :anum_pub(b), anum_pro(o), anum_pri(i){};//construtor with
void fun();//construtor
a(int b, int o, int i) :anum_pub(b), anum_pro(o), anum_pri(i){};//construtor with
void fun();//construtor
a(int b, int o, int i) :anum_pub(b), anum_pro(o), anum_pri(i){};//construtor with
void fun(){
std::cout << "anum_pub: "《從結果上來看私有繼承與上面的保護繼承沒有太大變化,但是如果在派生類b的派生類c中,派生類c的中將無法訪問到a:anum_pub,anum_pro以及anum_pri。
C 私有 保護 公有繼承
一 公有 pulic 繼承 繼承 是類的重要特性。a類繼承b類,我們稱b類為 基類 也稱為 父類 a類則相應地被稱為 派生類 或 子類 a類繼承了b類之後,a類就具有了b類的部分成員。那麼,究竟從基類那兒得到了哪些成員,這由2方面決定,繼承方式,基類成員的訪問許可權 即public private ...
C 繼承 公有,私有,保護
公有繼承 public 私有繼承 private 保護繼承 protected 是常用的三種繼承方式。1.公有繼承 public 公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生類的子類所訪問。2.私有繼承 private...
C 繼承 公有,私有,保護
公有繼承 public 私有繼承 private 保護繼承 protected 是常用的三種繼承方式。1.公有繼承 public 公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生類的子類所訪問。2.私有繼承 private...