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

十分鐘理解C ++中的運算符重載

開發 前端
在C ++中,我們可以使運算符為用戶定義的類工作。這意味著C ++能夠為運算符提供數據類型的特殊含義,這種能力稱為運算符重載。

 在C ++中,我們可以使運算符為用戶定義的類工作。這意味著C ++能夠為運算符提供數據類型的特殊含義,這種能力稱為運算符重載。

[[354257]]

例如,我們可以在String之類的類中重載運算符'+',以便僅使用+就可以連接兩個字符串。 算術運算符可能會重載的其他示例類是復數,小數,大整數等。

一個簡單而完整的例子

 

  1. #include<iostream>  
  2. using namespace std;  
  3.    
  4. class Complex {  
  5. private:  
  6.     int real, imag;  
  7. public:  
  8.     Complex(int r = 0, int i =0)  {real = r;   imag = i;}  
  9.     Complex operator + (Complex const &obj) {  
  10.          Complex res;  
  11.          res.real = real + obj.real;  
  12.          res.imag = imag + obj.imag;  
  13.          return res;  
  14.     }  
  15.     void print() { cout << real << " + i" << imag << endl; }  
  16. };  
  17.    
  18. int main()  
  19. {  
  20.     Complex c1(10, 5), c2(2, 4);  
  21.     Complex c3 = c1 + c2;  
  22.     c3.print();  
  23. }  

 

操作員功能和普通功能有什么區別?

操作員功能與普通功能相同。唯一的區別是,運算符的名稱始終是運算符關鍵字,后跟運算符的符號,并且在使用相應的運算符時會調用運算符功能。

以下是全局運算符功能的示例。

 

  1. #include<iostream>  
  2. using namespace std;  
  3.    
  4. class Complex {  
  5. private:  
  6.     int real, imag;  
  7. public:  
  8.     Complex(int r = 0, int i =0)  {real = r;   imag = i;}  
  9.     void print() { cout << real << " + i" << imag << endl; }  
  10.  
  11. friend Complex operator + (Complex const &, Complex const &);  
  12. };  
  13.    
  14.    
  15. Complex operator + (Complex const &c1, Complex const &c2)  
  16. {  
  17.      return Complex(c1.real + c2.real, c1.imag + c2.imag);  
  18. }  
  19.    
  20.    
  21. int main()  
  22. {  
  23.     Complex c1(10, 5), c2(2, 4);  
  24.     Complex c3 = c1 + c2;  
  25.     c3.print();  
  26.     return 0;  
  27. }  

 

我們可以讓所有運算符超負荷嗎?

除了少數操作員之外,幾乎所有操作員都可以重載。以下是不能重載的運算符的列表。

為什么不能。(點),::,?:和sizeof是否過載?

請參閱此以獲取Stroustrup自己的答案。

關于運算符重載的要點

1)為了使運算符重載起作用,至少一個操作數必須是用戶定義的類對象。

2) 賦值運算符:編譯器會自動為每個類創建一個默認的賦值運算符。默認賦值運算符確實將右側的所有成員分配到左側,并且在大多數情況下都可以正常工作(此行為與復制構造函數相同)。請參閱此了解更多詳情。

3) 轉換運算符:我們還可以編寫可用于將一種類型轉換為另一種類型的轉換運算符。

 

  1. #include <iostream>  
  2. using namespace std;  
  3. class Fraction  
  4. {  
  5.     int num, den;  
  6. public:  
  7.     Fraction(int n,  int d) { num = n; den = d; }  
  8.  
  9.     operator float() const {  
  10.         return float(num) / float(den);  
  11.     }  
  12. };  
  13.    
  14. int main() {  
  15.     Fraction f(2, 5);  
  16.     float val = f;  
  17.     cout << val;  
  18.     return 0;  
  19. }  

 

重載的轉換運算符必須是成員方法。其他運算符可以是成員方法或全局方法。

4)任何可以用單個參數調用的構造函數都可以用作轉換構造函數,這意味著它也可以用于隱式轉換為正在構造的類。

 

  1. #include<iostream>   
  2. using namespace std;  
  3.    
  4. class Point  
  5. {  
  6. private:  
  7.     int x, y;  
  8. public:  
  9.     Point(int i = 0, int j = 0) {  
  10.         x = i;   y = j;  
  11.     }  
  12.     void print() {  
  13.         cout << endl << " x = " << x << ", y = " << y;  
  14.     }  
  15. };  
  16.    
  17. int main() {  
  18.     Point t(20, 20);  
  19.     t.print();  
  20.     t = 30;    
  21.     t.print();  
  22.     return 0;  

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2019-04-01 14:59:56

負載均衡服務器網絡

2016-06-13 14:07:50

Java動態代理

2020-09-27 14:41:37

C語言編程語言計算機

2022-03-23 09:32:38

微服務容器Kubernetes

2020-12-17 06:48:21

SQLkafkaMySQL

2016-01-04 11:18:00

KubernetesKubernetes概容器技術

2015-09-06 09:22:24

框架搭建快速高效app

2024-05-13 09:28:43

Flink SQL大數據

2012-07-10 01:22:32

PythonPython教程

2023-11-30 10:21:48

虛擬列表虛擬列表工具庫

2022-06-16 07:31:41

Web組件封裝HTML 標簽

2024-06-19 09:58:29

2021-09-07 09:40:20

Spark大數據引擎

2023-04-12 11:18:51

甘特圖前端

2023-11-09 14:44:27

Docker鏡像容器

2022-12-27 09:10:38

ChatGPT技術邏輯

2020-12-11 09:40:10

DevOpsCICD

2015-11-06 11:03:36

2022-04-13 22:01:44

錯誤監控系統

2023-12-08 13:19:00

前端Reactour流行庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 四虎影院免费在线 | 国产一区二区久久 | 一区二区国产精品 | 一级黄色片毛片 | 国产亚洲一区二区三区 | 日本午夜一区二区三区 | 国产成人精品一区二区三区视频 | 亚洲91视频| 欧区一欧区二欧区三免费 | 欧美日韩一区二区视频在线观看 | 亚洲一区二区三区在线播放 | 99热精品在线 | 西西裸体做爰视频 | 69av在线视频 | 久热免费在线 | 91精品中文字幕一区二区三区 | 精品视频一区二区三区在线观看 | 一区二区三区四区在线视频 | 在线欧美亚洲 | 视频一区二区在线观看 | 日皮视频免费 | 国产精品久久久一区二区三区 | 国产91视频免费 | 在线观看成年视频 | 91久久精品国产91久久 | 中文字幕在线看 | 久久精品99久久 | 欧美精品二区 | 一区二区精品 | 亚洲人成人一区二区在线观看 | 一级毛片视频免费观看 | 国产99久久精品 | 日韩欧美视频 | 91视频导航 | 密色视频| 久久久久久久久久久爱 | 在线观看中文字幕视频 | 成人精品在线观看 | 久久亚洲综合 | 91成人在线视频 | 欧美在线a |