1. 程式人生 > >C++ primer 讀書筆記 第七章 02 訪問控制和封裝

C++ primer 讀書筆記 第七章 02 訪問控制和封裝

在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&);

友元宣告只能出現在類定義的內部

一般來說,最好在類定義開始或結束前的位置集中宣告友元。

友元宣告並不是一個通常意義上的函式宣告,友元宣告僅僅是為了打破訪問上的限制,不能省略友元函式自身的宣告。

為了使友元對類的使用者可見,我們通常把友元函式的宣告與類本身放置在同一個標頭檔案中。