7 2 訪問控制與封裝

2022-09-22 03:57:08 字數 1707 閱讀 8119

目錄完整**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 ibsn() const

sale_data& combine(sale_data& );

private :

double **g_price() const;

//資料成員

string bookno;

unsigned units_sold = 0;

double revenue = 0.0;

};

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

使用class和struct定義類唯一的區別就是預設的訪問許可權。

類的結構圖

在類的外部,非成員的介面函式無法訪問 private 的函式成員,而它又是介面函式,需要像其他介面函式一樣能夠訪問類的非公有成員,那麼如何解決此衝突呢?在類中宣告友元

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

class sale_data

sale_data(string s, unsigned n, double p) :

bookno(s), units_sold(n), revenue(n*p) {}

sale_data(istream &);

//關於sale_data物件的操作函式

string ibsn() const

sale_data& combine(sale_data& );

private :

double **g_price() const;

//資料成員

string bookno;

unsigned units_sold = 0;

double revenue = 0.0;

};//非成員函式介面

istream &read (istream &, sale_data &);

ostream &print(ostream &, sale_data &);

//外部建構函式

sale_data::sale_data(istream &is)

istream &read(istream &is, sale_data &item)

ostream &print(ostream &os, sale_data &item)

//外部成員函式

sale_data& sale_data::combine(constsale_data& trans)

double sale_data::**g_price() const

int main()

訪問控制與封裝

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

訪問控制與封裝

在c 語言中,我們使用訪問說明符加強類的封裝性 定義在public說明符之後的成員在整個程式內可被訪問,public成員定義類的介面。定義在private說明符之後的成員可以被類的成員函式訪問,但是不能被使用該類的 訪問,private部分封裝 即隱藏了 類的實現細節。作為介面的一部分,建構函式和部...

C 中的訪問控制與封裝

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