C++中的private protected public区别
生活随笔
收集整理的這篇文章主要介紹了
C++中的private protected public区别
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
private: 只能由該類(lèi)中的函數(shù)、其友元函數(shù)訪(fǎng)問(wèn),不能被任何其他訪(fǎng)問(wèn),該類(lèi)的對(duì)象也不能訪(fǎng)問(wèn).?
protected: 可以被該類(lèi)中的函數(shù)、子類(lèi)的函數(shù)、以及其友元函數(shù)訪(fǎng)問(wèn),但不能被該類(lèi)的對(duì)象訪(fǎng)問(wèn)?
public: 可以被該類(lèi)中的函數(shù)、子類(lèi)的函數(shù)、其友元函數(shù)訪(fǎng)問(wèn),也可以由該類(lèi)的對(duì)象訪(fǎng)問(wèn) 注:友元函數(shù)包括兩種:設(shè)為友元的全局函數(shù),設(shè)為友元類(lèi)中的成員函數(shù)
當(dāng)private,public,protected作為繼承方式時(shí):
對(duì)于公有繼承方式:?
(1)父類(lèi)的public成員成為子類(lèi)的public成員,允許類(lèi)以外的代碼訪(fǎng)問(wèn)這些成員;
(2)父類(lèi)的private成員仍舊是父類(lèi)的private成員,子類(lèi)成員不可以訪(fǎng)問(wèn)這些成員;
(3)父類(lèi)的protected成員成為子類(lèi)的protected成員,只允許子類(lèi)成員訪(fǎng)問(wèn);
(1) 基類(lèi)成員對(duì)其對(duì)象的可見(jiàn)性:?
公有成員可見(jiàn),其他不可見(jiàn)。這里保護(hù)成員同于私有成員。?
(2) 基類(lèi)成員對(duì)派生類(lèi)的可見(jiàn)性:?
公有成員和保護(hù)成員可見(jiàn),而私有成員不可見(jiàn)。這里保護(hù)成員同于公有成員。?
(3) 基類(lèi)成員對(duì)派生類(lèi)對(duì)象的可見(jiàn)性:?
公有成員可見(jiàn),其他成員不可見(jiàn)。?
所以,在公有繼承時(shí),派生類(lèi)的對(duì)象可以訪(fǎng)問(wèn)基類(lèi)中的公有成員;派生類(lèi)的成員函數(shù)可以訪(fǎng)問(wèn)基類(lèi)中的公有成員和保護(hù)成員。這里,一定要區(qū)分清楚派生類(lèi)的對(duì)象和派生類(lèi)中的成員函數(shù)對(duì)基類(lèi)的訪(fǎng)問(wèn)是不同的。?
對(duì)于私有繼承方式:?
(1)父類(lèi)的public成員成為子類(lèi)的private成員,只允許子類(lèi)成員訪(fǎng)問(wèn);
(2)父類(lèi)的private成員仍舊是父類(lèi)的private成員,子類(lèi)成員不可以訪(fǎng)問(wèn)這些成員;
(3)父類(lèi)的protected成員成為子類(lèi)的private成員,只允許子類(lèi)成員訪(fǎng)問(wèn);
(1) 基類(lèi)成員對(duì)其對(duì)象的可見(jiàn)性:?
公有成員可見(jiàn),其他成員不可見(jiàn)。?
(2) 基類(lèi)成員對(duì)派生類(lèi)的可見(jiàn)性:?
公有成員和保護(hù)成員是可見(jiàn)的,而私有成員是不可見(jiàn)的。?
(3) 基類(lèi)成員對(duì)派生類(lèi)對(duì)象的可見(jiàn)性:?
所有成員都是不可見(jiàn)的。?
所以,在私有繼承時(shí),基類(lèi)的成員只能由直接派生類(lèi)訪(fǎng)問(wèn),而無(wú)法再往下繼承。?
對(duì)于保護(hù)繼承方式:?
(1)父類(lèi)的public成員成為子類(lèi)的protected成員,只允許子類(lèi)成員訪(fǎng)問(wèn);
(2)父類(lèi)的private成員仍舊是父類(lèi)的private成員,子類(lèi)成員不可以訪(fǎng)問(wèn)這些成員;
(3)父類(lèi)的public成員成為子類(lèi)的protected成員,只允許子類(lèi)成員訪(fǎng)問(wèn);
這種繼承方式與私有繼承方式的情況相同。兩者的區(qū)別僅在于對(duì)派生類(lèi)的成員而言,對(duì)基類(lèi)成員有不同的可見(jiàn)性。?
上述所說(shuō)的可見(jiàn)性也就是可訪(fǎng)問(wèn)性。關(guān)于可訪(fǎng)問(wèn)性還有另的一種說(shuō)法。這種規(guī)則中,稱(chēng)派生類(lèi)的對(duì)象對(duì)基類(lèi)訪(fǎng)問(wèn)為水平訪(fǎng)問(wèn),稱(chēng)派生類(lèi)的派生類(lèi)對(duì)基類(lèi)的訪(fǎng)問(wèn)為垂直訪(fǎng)問(wèn)。?
一般規(guī)則如下:?
公有繼承時(shí),水平訪(fǎng)問(wèn)和垂直訪(fǎng)問(wèn)對(duì)基類(lèi)中的公有成員不受限制;?
私有繼承時(shí),水平訪(fǎng)問(wèn)和垂直訪(fǎng)問(wèn)對(duì)基類(lèi)中的公有成員也不能訪(fǎng)問(wèn);?
保護(hù)繼承時(shí),對(duì)于垂直訪(fǎng)問(wèn)同于公有繼承,對(duì)于水平訪(fǎng)問(wèn)同于私有繼承。?
總結(jié)
以上是生活随笔為你收集整理的C++中的private protected public区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: zabbix php 安装,zabbix
- 下一篇: 深入解析C++编程中的静态成员函数