C++ primer 讀書筆記 第七章 02 訪問控制和封裝
阿新 • • 發佈:2018-12-08
在c++中,我們使用訪問說明符加強類的封裝性:
- 定義在public說明符之後的成員在整個程式內可被訪問,public成員是暴露在外的,決定了類的介面
- 定義在private說明符之後的成員可以被類的成員函式訪問,但不能被使用該類的程式碼訪問,private封裝了類的實現細節
一個類可以包含0個或多個訪問說明符,而且不限制某個訪問說明符出現的次數。
class和struct
可以使用class或struct關鍵字中的任何一個定義類。唯一的區別是,它們的預設訪問許可權不一樣:
- strcut預設的訪問許可權是public的,定義在第一個訪問說明符之前的成員是public的
- class的預設訪問許可權是private的
友元
類可以允許其他類或者函式訪問它的非公有成員
方法是令其他類或者函式成為類的友元。
如果類想把一個函式作為它的友元,只需要在類的內部增加一條以friend關鍵字開始的函式宣告語句即可
class Sales_data
{
friend Sales_data add(const Sales_data&, const Sales_data&);
};
Sales_data add(const Sales_data&, cosnt Sales_data&);
友元宣告只能出現在類定義的內部
一般來說,最好在類定義開始或結束前的位置集中宣告友元。
友元宣告並不是一個通常意義上的函式宣告,友元宣告僅僅是為了打破訪問上的限制,不能省略友元函式自身的宣告。
為了使友元對類的使用者可見,我們通常把友元函式的宣告與類本身放置在同一個標頭檔案中。