標籤:
一:private、protected和public的存取權限問題:
private:1、類中的成員函數可以調用,2、類的友元函數可以調用,3、但是類對象無法直接調用。4、對於衍生類別,不管是成員函數還是衍生類別的對象都無法進行調用。
protected:1、類中的成員函數不可以調用,2、類的友元函數可以調用,3、類對象也無法進行調用。4、對於衍生類別,成員函數可以進行調用,但是衍生類別的對象則無法進行調用。
public:1、可以被類中的成員函數調用,2、類的友元函數可以調用,3、類對象也可以直接調用。4、對於衍生類別,成員函數和衍生類別的對象都可以進行調用。
註:友元函數包括1、設為友元的普通的非成員函數。2、設為友元的其它類的成員函數。3、設為友元類的所有成員函數。
二:關於private、protected和public的繼承問題:
1、不管是private、protected還是public,子類繼承了基類後,其必然繼承了基類所有成員(除了基類的建構函式和解構函式),同樣繼承了基類空間的大小。
#include<iostream>using namespace std;class A{public: A() { cout<<"這是class A."<<endl; }private: int a; int temp;};class B : private A{public: B() { cout<<"這是class B."<<endl; }private: int b;};void main(){ cout<<sizeof(A)<<endl; cout<<sizeof(B)<<endl;}繼承後容量大小改變樣本:
2、類繼承後,屬性的變化。
private 屬性可以被繼承,但是被繼承不管什麼情況下(除了基類的公有成員函數和基類的友元函數)都不能被直接調用;
使用private繼承,父類的protected和public屬性在子類中變為private;
使用protected繼承,父類的protected和public屬性在子類中變為protected;
使用public繼承,父類中的protected和public屬性不發生改變;
如下所示: public: protected: private:
public繼承 public protected 不可用
protected繼承 protected protected 不可用
private繼承 private private 不可用
淺析C++:private、protected和public