c++ 访问控制与封装
生活随笔
收集整理的這篇文章主要介紹了
c++ 访问控制与封装
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
訪問控制與封裝
文章目錄
- 訪問說明符:
- 友元:
- 封裝好處:
訪問說明符:
- public說明符:定義在public后的成員在整個程序內可被訪問,public成員定義類的接口。
- private說明符:定義在private后的成員可以被類的成員函數訪問,但是不能被使用該類的代碼訪問,private成員定義類的接口。
class關鍵字和struct關鍵字:
友元:
class Sales_data {//為sales_data的非成員函數所做的友元聲明。 friend Sales_data add(const Sales_data&, const Sales_data&); friend std::ostream &print(std::ostream&, const Sales_data&); friend std::istream &read(std::istream&, Sales_data&); public:// constructorsSales_data() = default;Sales_data(const std::string &s): bookNo(s) { }Sales_data(const std::string &s, unsigned n, double p):bookNo(s), units_sold(n), revenue(p*n) { }Sales_data(std::istream &);// operations on Sales_data objectsstd::string isbn() const { return bookNo; }Sales_data& combine(const Sales_data&);double avg_price() const; private:std::string bookNo;unsigned units_sold = 0;double revenue = 0.0; };// nonmember Sales_data interface functions //友元聲明僅僅指定了訪問權限,如果我們希望用戶能調用友元函數,還需要在友元聲明之外再專門對函數進行一次聲明。 Sales_data add(const Sales_data&, const Sales_data&); std::ostream &print(std::ostream&, const Sales_data&); std::istream &read(std::istream&, Sales_data&);類還可能有非成員函數,函數在概念上屬于類,但是不定義在類中,則它一般應與類聲明在同一個頭文件內。這里的add,print,read函數就是非成員函數。
既然Sales_data數據成員是private的,那我們add,print,read函數就無法正常編譯了。
類可以允許其他類或者函數訪問它的非公有成員,方法就是令其他類或者函數稱為它的友元。只需增加一條以friend關鍵字開始的函數聲明語句。
friend Sales_data add(const Sales_data&, const Sales_data&); friend std::ostream &print(std::ostream&, const Sales_data&); friend std::istream &read(std::istream&, Sales_data&);友元聲明只能出現在類的內部,但是具體位置不限。
封裝好處:
總結
以上是生活随笔為你收集整理的c++ 访问控制与封装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言指针怎么存二维数组,C语言怎么用指
- 下一篇: c语言修改字符串c2133,通过crea