訪問控制與封裝

2022-06-21 15:00:11 字數 1106 閱讀 8076

在c++語言中,我們使用訪問說明符加強類的封裝性:

·定義在public說明符之後的成員在整個程式內可被訪問,public成員定義類的介面。

·定義在private說明符之後的成員可以被類的成員函式訪問,但是不能被使用該類的**訪問,private部分封裝(即隱藏了)類的實現細節。

作為介面的一部分,建構函式和部分成員函式緊跟在public說明符之後;而資料成員和作為實現部分的函式則跟在private說明符後面。

乙個類可以包含0個或多個訪問說明符,而且對於某個訪問說明符能出現多少次也沒有嚴格限定。每個訪問說明符指定了接下來的成員的訪問級別,其有效範圍直到出現下乙個訪問說明符或者到達類的結尾處為止。

class和struct關鍵字的唯一區別是,預設訪問許可權不太一樣。類可以在它的第乙個訪問說明符之前定義成員,如果使用struct關鍵字,則定義在第乙個訪問說明符之前的成員是public的;相反,使用class,這些成員是private的。

友元

對於作為類的介面一部分而不是類的成員的函式,由於private的限制而無法訪問需要訪問的成員。

類可以允許其他類或者函式訪問它的非公有成員,方法是令其他類或者函式成為它的友元。

如果類想把乙個函式作為它的友元,只需要增加一條以friend關鍵字開始的函式宣告語句即可。

友元宣告只能出現在類定義的內部,但是在類內出現的具體位置不限。友元不是類的成員也不受它所在區域訪問控制級別的約束。一般來說,最好在類定義開始或結束前的位置集中宣告友元。

友元的宣告僅僅指定了訪問的許可權,而非乙個通常意義上的函式宣告。如果我們希望類的使用者能夠呼叫某個友元函式,那麼我們就必須在友元宣告之外再專門對函式進行一次宣告。為了使友元對類的使用者可見,我們通常把友元的宣告與類本身放置在同乙個標頭檔案中(類的外部)。許多編譯器允許在尚無友元函式的初始宣告的情況下就呼叫它,不過最好還是提供乙個獨立的函式宣告。

關鍵概念:封裝的益處

封裝有兩個重要的優點:

·確保使用者**不會無意間破壞封裝物件的狀態。

·被封裝的類的具體實現細節可以隨時改變,而無須調整使用者級別的**。

儘管當類的定義發生改變時無須更改使用者**,但是使用了該類的原始檔必須重新編譯。

更多c++基礎概念

訪問控制與封裝

使用訪問說明符能夠加強類的封裝性 一般的,建構函式和部分作為介面的成員函式定義緊跟在public說明符之後。資料成員和作為實現部分的成員函式緊跟在private之後。乙個類可以包含0個或多個訪問說明符,對於某個說明符出現多少次也沒有限制。每個訪問說明符指定接下來的成員訪問級別,其有效範圍直到出現下乙...

7 2 訪問控制與封裝

目錄完整 2 includeusing namespace std class sale data sale data string s,unsigned n,double p bookno s units sold n revenue n p sale data istream string ib...

C 中的訪問控制與封裝

訪問控制與封裝 使用訪問說明符來加強類的封裝性。public 和private 使用class或struct關鍵字 二者的唯一區別就是預設訪問許可權不太一樣 struct的預設是public,class預設是private 友元 類可以允許其他類或函式訪問它的非公有成員,方法是通過令其它類或函式成為...