日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

细嚼慢咽C++primer(4)——类(1):构造函数,类型别名

發布時間:2024/7/19 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 细嚼慢咽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):构造函数,类型别名的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。