91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何快速理解C ++中的運算符重載

發布時間:2021-10-23 15:56:47 來源:億速云 閱讀:262 作者:iii 欄目:web開發

本篇內容主要講解“如何快速理解C ++中的運算符重載”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何快速理解C ++中的運算符重載”吧!

在C ++中,我們可以使運算符為用戶定義的類工作。這意味著C ++能夠為運算符提供數據類型的特殊含義,這種能力稱為運算符重載。例如,我們可以在String之類的類中重載運算符'+',以便僅使用+就可以連接兩個字符串。  算術運算符可能會重載的其他示例類是復數,小數,大整數等。

一個簡單而完整的例子

#include<iostream>  using namespace std;     class Complex {  private:      int real, imag;  public:      Complex(int r = 0, int i =0)  {real = r;   imag = i;}      Complex operator + (Complex const &obj) {           Complex res;           res.real = real + obj.real;           res.imag = imag + obj.imag;           return res;      }      void print() { cout << real << " + i" << imag << endl; }  };     int main()  {      Complex c1(10, 5), c2(2, 4);      Complex c3 = c1 + c2;      c3.print();  }

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

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

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

#include<iostream>  using namespace std;     class Complex {  private:      int real, imag;  public:      Complex(int r = 0, int i =0)  {real = r;   imag = i;}      void print() { cout << real << " + i" << imag << endl; }   friend Complex operator + (Complex const &, Complex const &);  };        Complex operator + (Complex const &c1, Complex const &c2)  {       return Complex(c1.real + c2.real, c1.imag + c2.imag);  }        int main()  {      Complex c1(10, 5), c2(2, 4);      Complex c3 = c1 + c2;      c3.print();      return 0;  }

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

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

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

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

關于運算符重載的要點

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

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

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

#include <iostream>  using namespace std;  class Fraction  {      int num, den;  public:      Fraction(int n,  int d) { num = n; den = d; }       operator float() const {          return float(num) / float(den);      }  };     int main() {      Fraction f(2, 5);      float val = f;      cout << val;      return 0;  }

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

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

#include<iostream>   using namespace std;     class Point  {  private:      int x, y;  public:      Point(int i = 0, int j = 0) {          x = i;   y = j;      }      void print() {          cout << endl << " x = " << x << ", y = " << y;      }  };     int main() {      Point t(20, 20);      t.print();      t = 30;        t.print();      return 0;  }

到此,相信大家對“如何快速理解C ++中的運算符重載”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临泽县| 鄂托克前旗| 定日县| 高陵县| 淮阳县| 北川| 宝丰县| 凯里市| 大庆市| 南漳县| 崇仁县| 宁德市| 平湖市| 肥乡县| 右玉县| 晋宁县| 辉县市| 睢宁县| 肃南| 绥德县| 边坝县| 鄂尔多斯市| 固原市| 锡林浩特市| 洪江市| 三亚市| 金塔县| 蒙自县| 富宁县| 韩城市| 商水县| 江源县| 铁岭市| 苗栗县| 海丰县| 绥中县| 岑巩县| 广昌县| 岳普湖县| 宜宾市| 南通市|