C++ Public, Protected, Private
生活随笔
收集整理的這篇文章主要介紹了
C++ Public, Protected, Private
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
當(dāng)private,public,protected單純的作為一個類中的成員權(quán)限設(shè)置時:
private: 只能由該類中的函數(shù)、其友元函數(shù)訪問,不能被任何其他訪問,該類的對象也不能訪問.?
protected: 可以被該類中的函數(shù)、子類的函數(shù)、以及其友元函數(shù)訪問,但不能被該類的對象訪問?
public: 可以被該類中的函數(shù)、子類的函數(shù)、其友元函數(shù)訪問,也可以由該類的對象訪問 注:友元函數(shù)包括兩種:設(shè)為友元的全局函數(shù),設(shè)為友元類中的成員函數(shù)
當(dāng)private,public,protected作為繼承方式時:
對于公有繼承方式:?
(1)父類的public成員成為子類的public成員,允許類以外的代碼訪問這些成員;
(2)父類的private成員仍舊是父類的private成員,子類成員不可以訪問這些成員;
(3)父類的protected成員成為子類的protected成員,只允許子類成員訪問;
(1) 基類成員對其對象的可見性:?
公有成員可見,其他不可見。這里保護(hù)成員同于私有成員。?
(2) 基類成員對派生類的可見性:?
公有成員和保護(hù)成員可見,而私有成員不可見。這里保護(hù)成員同于公有成員。?
(3) 基類成員對派生類對象的可見性:?
公有成員可見,其他成員不可見。?
所以,在公有繼承時,派生類的對象可以訪問基類中的公有成員;派生類的成員函數(shù)可以訪問基類中的公有成員和保護(hù)成員。這里,一定要區(qū)分清楚派生類的對象和派生類中的成員函數(shù)對基類的訪問是不同的。?
對于私有繼承方式:?
(1)父類的public成員成為子類的private成員,只允許子類成員訪問;
(2)父類的private成員仍舊是父類的private成員,子類成員不可以訪問這些成員;
(3)父類的protected成員成為子類的private成員,只允許子類成員訪問;
(1) 基類成員對其對象的可見性:?
公有成員可見,其他成員不可見。?
(2) 基類成員對派生類的可見性:?
公有成員和保護(hù)成員是可見的,而私有成員是不可見的。?
(3) 基類成員對派生類對象的可見性:?
所有成員都是不可見的。?
所以,在私有繼承時,基類的成員只能由直接派生類訪問,而無法再往下繼承。?
對于保護(hù)繼承方式:?
(1)父類的public成員成為子類的protected成員,只允許子類成員訪問;
(2)父類的private成員仍舊是父類的private成員,子類成員不可以訪問這些成員;
(3)父類的public成員成為子類的protected成員,只允許子類成員訪問;
這種繼承方式與私有繼承方式的情況相同。兩者的區(qū)別僅在于對派生類的成員而言,對基類成員有不同的可見性。?
上述所說的可見性也就是可訪問性。關(guān)于可訪問性還有另的一種說法。這種規(guī)則中,稱派生類的對象對基類訪問為水平訪問,稱派生類的派生類對基類的訪問為垂直訪問。?
一般規(guī)則如下:?
公有繼承時,水平訪問和垂直訪問對基類中的公有成員不受限制;?
私有繼承時,水平訪問和垂直訪問對基類中的公有成員也不能訪問;?
保護(hù)繼承時,對于垂直訪問同于公有繼承,對于水平訪問同于私有繼承。?
private: 只能由該類中的函數(shù)、其友元函數(shù)訪問,不能被任何其他訪問,該類的對象也不能訪問.?
protected: 可以被該類中的函數(shù)、子類的函數(shù)、以及其友元函數(shù)訪問,但不能被該類的對象訪問?
public: 可以被該類中的函數(shù)、子類的函數(shù)、其友元函數(shù)訪問,也可以由該類的對象訪問 注:友元函數(shù)包括兩種:設(shè)為友元的全局函數(shù),設(shè)為友元類中的成員函數(shù)
當(dāng)private,public,protected作為繼承方式時:
對于公有繼承方式:?
(1)父類的public成員成為子類的public成員,允許類以外的代碼訪問這些成員;
(2)父類的private成員仍舊是父類的private成員,子類成員不可以訪問這些成員;
(3)父類的protected成員成為子類的protected成員,只允許子類成員訪問;
(1) 基類成員對其對象的可見性:?
公有成員可見,其他不可見。這里保護(hù)成員同于私有成員。?
(2) 基類成員對派生類的可見性:?
公有成員和保護(hù)成員可見,而私有成員不可見。這里保護(hù)成員同于公有成員。?
(3) 基類成員對派生類對象的可見性:?
公有成員可見,其他成員不可見。?
所以,在公有繼承時,派生類的對象可以訪問基類中的公有成員;派生類的成員函數(shù)可以訪問基類中的公有成員和保護(hù)成員。這里,一定要區(qū)分清楚派生類的對象和派生類中的成員函數(shù)對基類的訪問是不同的。?
對于私有繼承方式:?
(1)父類的public成員成為子類的private成員,只允許子類成員訪問;
(2)父類的private成員仍舊是父類的private成員,子類成員不可以訪問這些成員;
(3)父類的protected成員成為子類的private成員,只允許子類成員訪問;
(1) 基類成員對其對象的可見性:?
公有成員可見,其他成員不可見。?
(2) 基類成員對派生類的可見性:?
公有成員和保護(hù)成員是可見的,而私有成員是不可見的。?
(3) 基類成員對派生類對象的可見性:?
所有成員都是不可見的。?
所以,在私有繼承時,基類的成員只能由直接派生類訪問,而無法再往下繼承。?
對于保護(hù)繼承方式:?
(1)父類的public成員成為子類的protected成員,只允許子類成員訪問;
(2)父類的private成員仍舊是父類的private成員,子類成員不可以訪問這些成員;
(3)父類的public成員成為子類的protected成員,只允許子類成員訪問;
這種繼承方式與私有繼承方式的情況相同。兩者的區(qū)別僅在于對派生類的成員而言,對基類成員有不同的可見性。?
上述所說的可見性也就是可訪問性。關(guān)于可訪問性還有另的一種說法。這種規(guī)則中,稱派生類的對象對基類訪問為水平訪問,稱派生類的派生類對基類的訪問為垂直訪問。?
一般規(guī)則如下:?
公有繼承時,水平訪問和垂直訪問對基類中的公有成員不受限制;?
私有繼承時,水平訪問和垂直訪問對基類中的公有成員也不能訪問;?
保護(hù)繼承時,對于垂直訪問同于公有繼承,對于水平訪問同于私有繼承。?
總結(jié)
以上是生活随笔為你收集整理的C++ Public, Protected, Private的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++class默认生成4个函数
- 下一篇: C++共享变量机制