C/C++編程筆記:訪問修飾符丨Public、Private和Protected


訪問修飾符用于實(shí)現(xiàn)稱為數(shù)據(jù)隱藏的面向?qū)ο缶幊痰闹匾矫妗?紤]一個(gè)真實(shí)的例子:
擁有10名核心成員的研究與分析部門(R&AW)擁有有關(guān)國(guó)家安全的敏感機(jī)密信息?,F(xiàn)在,我們可以將這些核心成員核心化為類的數(shù)據(jù)成員或成員函數(shù),而這些成員又可以與R&A部門相關(guān)聯(lián)。這10個(gè)成員可以直接從其所屬部門(班級(jí))訪問機(jī)密信息,但是除這10個(gè)成員之外,任何人都不能直接訪問此信息,即,除班級(jí)中普遍存在的那些外部功能外,其他人不能訪問未授權(quán)的信息。既不具有分配的特權(quán)(例如,朋友類和繼承的類所擁有的特權(quán),如以后將在本文中看到的那樣),也沒有訪問被允許直接訪問機(jī)密信息的這10個(gè)成員之一(類似于可以通過(guò)直接訪問私有成員的類的公共成員函數(shù)在外部訪問該類)。這就是實(shí)踐中的數(shù)據(jù)隱藏。
訪問修飾符或訪問說(shuō)明在類用于分配的輔助功能的類成員。也就是說(shuō),它對(duì)類成員設(shè)置了一些限制,使其不能被外部函數(shù)直接訪問。
C ++中提供了3種類型的訪問修飾符:
Public
Private
Protected
注意:如果我們沒有為類內(nèi)的成員指定任何訪問修飾符,則默認(rèn)情況下,成員的訪問修飾符將為Private。
現(xiàn)在讓我們?cè)敿?xì)了解這些訪問修飾符:
1. Public:在公共說(shuō)明符下聲明的所有類成員將對(duì)所有人開放。聲明為public的數(shù)據(jù)成員和成員函數(shù)也可以由其他類和函數(shù)訪問。可以使用具有該類對(duì)象的直接成員訪問運(yùn)算符(。)從程序中的任何位置訪問該類的公共成員。
例子:

輸出:
半徑是:5.5
面積是:94.985
在上面的程序中,數(shù)據(jù)成員半徑聲明為public,因此可以在類外部訪問它,因此可以從main()內(nèi)部訪問它。
2.私有:聲明為私有的類成員只能由該類內(nèi)部的成員函數(shù)訪問。類之外的任何對(duì)象或函數(shù)都不允許直接訪問它們。只允許成員函數(shù)或朋友函數(shù)訪問類的私有數(shù)據(jù)成員。
例子:

輸出:
在函數(shù)'int main()'中:11 : 16:錯(cuò)誤:'double Circle :: radius'是私有的
double半徑;
^ 31:9:錯(cuò)誤:在此上下文中
obj.radius = 1.5; ^
上面程序的輸出是編譯時(shí)錯(cuò)誤,因?yàn)椴辉试S我們直接在類外部訪問類的私有數(shù)據(jù)成員。但是嘗試訪問obj.radius,radius是私有數(shù)據(jù)成員,我們得到了編譯錯(cuò)誤。
但是,我們可以使用類的公共成員函數(shù)間接訪問類的私有數(shù)據(jù)成員。
例子:

輸出:
半徑是:1.5
面積是:7.065
3.受保護(hù)的:受保護(hù)的訪問修飾符與私有訪問修飾符類似,除非不能在朋友類的幫助下,否則不能在其類之外進(jìn)行訪問,區(qū)別在于聲明為受保護(hù)的類成員可以由任何人訪問該類的subclass(派生類)。
注意:這種通過(guò)繼承進(jìn)行的訪問可以根據(jù)繼承的模式來(lái)更改派生類中基類元素的訪問修飾符。
例子:

輸出:
id_protected是:81
以上就是今天的分享內(nèi)容!每天學(xué)點(diǎn)小知識(shí),希望對(duì)你有幫助~
另外如果你想更好的提升你的編程能力,學(xué)好C語(yǔ)言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~
微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!
