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

EasyC++,運算符重載

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

[[440522]]

 大家好,我是梁唐。

運算符重載

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

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

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

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

我們通過operator加上運算符來定義一個重載運算符,需要注意的是,我們只能重載目前C++當中已有的運算符。比如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 

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

我們來看下這個函數的具體實現:

  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

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

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

  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

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

我們在調用的時候,除了可以用函數名調用之外,也可以使用加號進行調用:

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

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

本文轉載自微信公眾號「Coder梁」,可以通過以下二維碼關注。轉載本文請聯系Coder梁公眾號。

 

責任編輯:武曉燕 來源: Coder梁
相關推薦

2021-12-16 10:40:11

C++運算符重載

2021-10-20 14:03:06

C++運算符類型

2021-12-29 20:31:40

C++多態指針

2021-12-12 18:13:54

C++This指針

2021-11-26 00:03:20

C++編譯常量

2021-12-09 10:56:50

函數C++原型

2021-11-09 10:38:16

C++Const指針

2021-12-11 19:02:03

函數C++對象

2021-11-27 11:50:09

C++靜態持續

2021-12-08 10:43:09

C++實現

2021-12-10 10:45:36

C++函數Stock

2021-10-26 00:19:51

C++結構體存儲

2021-12-30 14:58:58

C++函數動態

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關鍵字

2021-11-10 10:48:36

C++函數指針

2009-09-04 13:18:10

C#允許運算符重載
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: a爱视频 | 午夜免费视频 | 国产精品久久久久无码av | 黄色一级大片视频 | 国产美女精品 | 日韩国产一区二区三区 | 日日操网站| 97在线观看 | 欧美一二三四成人免费视频 | 亚洲区一区二 | 影音先锋久久 | 日韩二区 | 久久久久久亚洲国产精品 | 91视频免费在观看 | 在线不卡| 久久人体 | 久久久精品天堂 | 99久久精品国产一区二区三区 | 亚洲97| 国产精品2区| 日日草夜夜草 | 亚洲综合视频一区 | 日韩在线不卡视频 | 亚洲一区二区在线 | 99中文字幕 | 日韩一级精品视频在线观看 | 91亚洲国产成人久久精品网站 | 欧美啊v在线观看 | 伊人免费在线观看 | 精品久久国产老人久久综合 | 一区二区三区亚洲 | 伊人最新网址 | 国产精品欧美一区二区三区不卡 | 色综合天天综合网国产成人网 | 夜夜夜久久久 | 欧美成视频 | 天天综合网天天综合色 | 精品九九 | 日韩a在线 | 一区二区三区在线电影 | 日韩成人专区 |