细嚼慢咽C++primer(4)——类(1):构造函数,类型别名
生活随笔
收集整理的這篇文章主要介紹了
细嚼慢咽C++primer(4)——类(1):构造函数,类型别名
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 ?最簡單地說,類即使定義了一個新的類型和一個新的作用域。
2 ?基礎
1 ?構造函數
構造函數一般應使用一個構造函數初始化列表,來初始化對象的數據成員。
Sales_item(): units_sold(0), revenue(0.0) {};2 ?成員函數
在類內部定義的函數默認為inline.
將關鍵字const加在形參表之后,就可以將成員函數聲明為常量:
double avg_price() const;const成員不能改變其所操作的對象的數據成員。const必須同時出現在聲明和定義中,若只出現在其中一處,就會出現一個編譯時錯誤。
習題12.1:
using namespace std; class Person {private:string name;string address; }習題12.2:
using namespace std; class Person {Persion(string &name, string &addr){}private:string name;string address; };習題12.3:
using namespace std; class Person {Persion(string &name, string &addr){}private:string name;string address;public:string getName() const{return self.name;}string getAddr() const{return self.address;} }; 返回名字和地址的操作不應該修改成員變量的值,所以應該指定成員函數為const。習題12.4:
name和address為private實現數據隱藏, 函數getName() 和getAddr()為public提供接口,構造函數通常也為public.3 ?數據抽象和封裝
在C++中,使用訪問標號(public, private, protected)來定義類的抽象接口和實施封裝。
兩個優點:
- 避免類內部出現無意的,可能破壞對象狀態的用戶級錯誤;
- 隨時間推移可以根據需求改變或缺陷報告來完善類實現,而無需改變用戶級代碼。
習題12.5:
C++支持三種訪問標號,public private protected習題12.6:
class關鍵字定義的類,默認的訪問權限為private,struct關鍵字定義的類,默認的訪問權限是public。習題12.7:
封裝是一種將低層次的元素組合起來形成新的,高層次實體的技術。
封裝隱藏了內部元素的實現細節。
4 使用類型別名來簡化類
類可以定義自己的局部類型的名字。
class Screen { public:// interface member functionstypedef std::string::size_type index; private:std::string contents;index cursor;index height, width; };可以在類定義體內指定一個成員為inline,作為其聲明的一部分,或者,也可以在類定義體外部的函數定義上指定inline。在聲明和定義處指定inline都是合法的。
注意:inline成員函數的定義必須在調用該函數的每個源文件中是可見的,不在類體內定義的inline成員函數,其定義通常應放在有類定義的同一頭文件中。
12.8:
class Sales_item {public:double avg_price() const;bool same_isbn(const Sales_item &rhs) const{return isbn == rhs.isbn;}private:std:string isbn;unsigned units_sold;double revenue; }; inline double Sales_item :: avg_price() const {if (units_sold)?return revenue/units_sold;elsereturn 0; }其他的兩種寫法:
- 將成員函數的定義寫在類內部;
- 在類內部進行成員函數的聲明時,指定inline關鍵字。
習題12.9:
class Screen { public:// interface member functionstypedef std::string::size_type index;Screen(index ht, index wt, const std::string &cntnts){height = ht;width = wt;contents = cntnts;} private:std::string contents;index cursor;index height, width; };轉載于:https://www.cnblogs.com/suzhou/p/3638972.html
總結
以上是生活随笔為你收集整理的细嚼慢咽C++primer(4)——类(1):构造函数,类型别名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对css类名className的一些操作
- 下一篇: 区分Activity的四种加载模式-ac