成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

EasyC++,運算符重載

開發(fā) 后端
C++當(dāng)中除了函數(shù)可以重載之外,其實運算符也是可以重載的。我們之前已經(jīng)接觸過一些,可能大家沒有意識到。

[[440522]]

 大家好,我是梁唐。

運算符重載

C++當(dāng)中除了函數(shù)可以重載之外,其實運算符也是可以重載的。我們之前已經(jīng)接觸過一些,可能大家沒有意識到。

舉個例子,乘號*,運用在指針上,就是取值的意思,而運用在算數(shù)當(dāng)中,則是乘法的意思。同樣一個符號,用在不同的地方,起到了不同的效果。這其實就是一種重載,C++根據(jù)操作數(shù)的數(shù)目和類型來決定要使用哪一種操作。

另外C++允許將運算符重載擴(kuò)展到用戶自定義的類型,也就是結(jié)構(gòu)體和類當(dāng)中。比如,我們可以將重載加號,對兩個對象相加。

其實這種用法也出現(xiàn)過,就是string類,我們將兩個字符串相加時,得到的是兩個字符串的拼接。

我們通過operator加上運算符來定義一個重載運算符,需要注意的是,我們只能重載目前C++當(dāng)中已有的運算符。比如operator []將重載[]運算符,operator +重載加法運算符等等。

下面我們就來看一個例子:

  1. #ifndef MYTIME0__H_ 
  2. #define MYTIME0__H_ 
  3.  
  4. class Time { 
  5.   private: 
  6.      int hours; 
  7.      int minutes; 
  8.     public
  9.      Time(); 
  10.      Time(int h, int m=0); 
  11.      void AddMin(int m); 
  12.      void AddHr(int h); 
  13.      void Reset(int h=0, int m=0); 
  14.      Time Sum(const Time &t) const; 
  15.      void Show() const; 
  16. }; 
  17. #endif 

我們創(chuàng)建了一個Time類用來表示時間,還有當(dāng)中配套的一些方法。我們著重看一下Sum函數(shù),這個函數(shù)接收的是一個Time對象的引用,而返回的是一個Time對象。

我們來看下這個函數(shù)的具體實現(xiàn):

  1. Time Time::Sum(const Time &t) const { 
  2.     Time sum
  3.     sum.minutes = minutes + t.minutes; 
  4.     sum.hours = hours + t.hours + sum.minutes / 60; 
  5.     sum.minutes %= 60; 
  6.     return sum

這一段邏輯表示兩個時間相加,需要注意一下進(jìn)位即可。我們將傳入的參數(shù)設(shè)置為引用是為了提高參數(shù)傳遞的效率,返回的結(jié)果不能設(shè)置成引用是因為sum對象是局部對象,函數(shù)結(jié)束時將會被刪除,因此引用就指向了一個不存在的對象。

我們可以將這個函數(shù)改寫成重載加法運算符:

  1. Time Time::operator+(const Time &t) const { 
  2.     Time sum
  3.     sum.minutes = minutes + t.minutes; 
  4.     sum.hours = hours + t.hours + sum.minutes / 60; 
  5.     sum.minutes %= 60; 
  6.     return sum

除了函數(shù)簽名改了一下之外,邏輯和之前是一樣的。

我們在調(diào)用的時候,除了可以用函數(shù)名調(diào)用之外,也可以使用加號進(jìn)行調(diào)用:

  1. Time a, b; 
  2. a.opeator+(b); 
  3. a + b; 

這兩種都是可以的,并且也是等價的。

本文轉(zhuǎn)載自微信公眾號「Coder梁」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Coder梁公眾號。

 

責(zé)任編輯:武曉燕 來源: Coder梁
相關(guān)推薦

2021-12-16 10:40:11

C++運算符重載

2021-10-20 14:03:06

C++運算符類型

2021-12-12 18:13:54

C++This指針

2021-12-29 20:31:40

C++多態(tài)指針

2021-11-26 00:03:20

C++編譯常量

2021-12-09 10:56:50

函數(shù)C++原型

2021-12-08 10:43:09

C++實現(xiàn)

2021-12-10 10:45:36

C++函數(shù)Stock

2021-10-26 00:19:51

C++結(jié)構(gòu)體存儲

2021-12-30 14:58:58

C++函數(shù)動態(tài)

2021-11-09 10:38:16

C++Const指針

2021-12-11 19:02:03

函數(shù)C++對象

2021-11-27 11:50:09

C++靜態(tài)持續(xù)

2021-11-10 10:48:36

C++函數(shù)指針

2009-08-12 10:47:03

C#運算符重載

2021-10-26 15:36:17

C++枚舉值類型

2021-10-27 16:27:20

C++指針操控

2021-12-05 18:20:42

C++空間特性

2022-01-04 16:35:42

C++Protected關(guān)鍵字

2022-09-19 08:10:37

運算符函數(shù)語言
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 鸳鸯谱在线观看高清 | 不卡一区二区三区四区 | jav成人av免费播放 | 日韩精品中文字幕在线 | 欧美日韩一区二区三区在线观看 | 午夜天堂精品久久久久 | 国产欧美日韩精品在线观看 | 欧美日韩在线一区二区 | 草草视频在线观看 | 日韩视频在线播放 | 国产不卡视频 | 视频在线一区二区 | 亚洲免费观看 | 蜜桃视频在线观看免费视频网站www | 日本一道本| 久久亚洲国产精品 | 亚洲人成在线观看 | www.操.com| 久久久一区二区三区 | 日韩一区精品 | 国产成人小视频 | 成人h动漫精品一区二区器材 | 欧美国产精品 | 91精品国产一区二区三区 | 亚洲欧美视频 | 精品国产乱码久久久久久闺蜜 | 成人黄色电影在线观看 | 中文字幕第十页 | 欧美一区二区三区在线观看 | 日日久| 亚洲欧美日韩精品久久亚洲区 | 亚洲精品大全 | 亚洲高清视频在线观看 | 亚洲成av人片在线观看 | 国产免费一区二区三区最新6 | h在线免费观看 | 国产黄色在线观看 | 久久久久久久久国产精品 | 日韩在线观看中文字幕 | 欧美a级成人淫片免费看 | 日韩在线看片 |