亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++運算符重載的方法詳細解析

2020-01-26 15:44:41
字體:
來源:轉載
供稿:網友

運算符重載實質上是函數的重載

重載運算符的函數一般格式如下:

函數類型    operator  運算符名稱    (形參表列)

{對運算符的重載處理}

例如,想將“+”用于Complex(復數)的加法運算,函數的原型可以是這樣的:

復制代碼 代碼如下:

Complex operator + (Complex & c1,Complex &c2);

其中,operator是關鍵字,時候專門用于定義重載運算符的函數的,運算符名稱就是C++提供給用戶的預定運算符。

注意:函數名是由operator和運算符組成。

上面的operator+就是函數名,意思是“對運算符+重載“。只要掌握這點,這可以發現,這類函數和其他函數在形式上沒有什么區別。

兩個形參是Complex類對象的引用,要求實參為Complex類對象。

在定義了重載運算符后,可以說:函數operator+重載了運算符+。

在執行復數相加的表達式c1+c2時(假設c1+c2都已被定義為Complex),系統就會調用operator+函數,把c1+c2作為實參,與形參進行虛實結合。

為了說明把運算符重載后,執行表達式就是調用函數的過程,可以把兩個整數相加也想象稱為調用下面的函數:

復制代碼 代碼如下:

int operator + (int a,int b)
{
          return (a+b);
}

如果有表達式5+8,就調用此函數,將5和8作為調用函數時的形參,函數的返回值為13,這就是通過函數的方法理解運算符。

=====================示例代碼1.1==================================

復制代碼 代碼如下:

#include<iostream>
using namespace std;
class Complex
{
 public:
  Complex()
  {
   real=0;
   imag=0;
  }
  Complex(double r,double i)
  {
   real=r;
   imag=i;
  }
  Complex operator + (Complex &c2);//聲明運算符的"+"函數
  void display();
 private:
  double real;
  double imag;
};
Complex Complex::operator+(Complex &c2)
{
 Complex c;
 c.real=real+c2.real;
 c.imag=imag+c2.imag;
 return c;
}
void Complex::display()
{
 cout<<"("<<real<<","<<imag<<"i)"<<endl;
}
int main()
{
 Complex c1(3,4),c2(5,-10),c3;
 c3=c1+c2;
 cout<<"c1=";
 c1.display();
 cout<<"c2=";
 c2.display();
 cout<<"c3=";
 c3.display();
  return 0;
}

分析:

在main函數中,“c3=c1+c2;”在將運算符+重載為類的成員函數后,C++編譯系統將程序中的表達式c1+c2解釋為:

c1.operator+(c2);//其中c1+c2是Complex類的對象

即以c2為實參調用c1的運算符重載函數operator+(Complex & c2),進行求值,得到兩個復數之和。上面的“operator+”是一個函數名,它是類Complex的成員函數。

在實際工作中,類的聲明和類的使用往往是分離的。假如在聲明Complex類時,對運算符+,-,*,/都進行了重載,那么使用這個類的用戶在編程時可以完全不考慮函數是怎么實現的,

放心大膽地直接使用+,-,*,/進行復數的運算即可,顯然十分方便。

對上面的運算符重載函數operator +還可以改寫的更簡練一些:

復制代碼 代碼如下:

Complex Complex::operator+(Complex &c2)
{
 return Complex(c2.real+real,c2.imag+imag);
}

return語句中的Complex(c2.real+real,c2.imag+imag)是建立一個臨時對象,它沒有對象名,是一個無名對象。

在建立臨時對象過程中,調用構造函數。return語句將此臨時對象作為函數返回值。

那么,我們將+運算符進行了重載以后,可否將一個常量和一個復數相加呢?比如:

復制代碼 代碼如下:

c3=3+c2;        //錯誤,與形參類型不匹配

這是行不通的,因為我們定義operator +函數的時候,形參是兩個Complex的對象,也就是說,實參和形參匹配才可以調用函數。

應寫成對象形式,如:

復制代碼 代碼如下:

c3=Complex(3,0)+c2;     //正確,類型均為對象

還需要說明的是:運算符被重載后,其原有的功能仍然保留,沒有喪失或改變。

例如,運算符+被重載以后,仍然可以用于int,float,double,char類型數據的運算,同時又增加了用于復數相加的功能。

編譯系統根據表達式的上下文,即根據運算符兩側(如果是單目運算符則為一側)的數據類型決定的。

如,對于3+5,則執行整數加法;對于3.4+5.45,則執行雙精度數加法;對于兩個復數類相加,則執行復數加法。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美极品欧美精品欧美视频| 欧美大成色www永久网站婷| 亚洲在线一区二区| 欧美性jizz18性欧美| 69av视频在线播放| 亚洲视频在线免费观看| 中文欧美在线视频| 日韩极品精品视频免费观看| 欧美激情视频网站| 成人免费淫片视频软件| 国产精品一区二区三区久久久| 高清在线视频日韩欧美| 国产精品一区二区三区在线播放| 日本免费一区二区三区视频观看| 宅男66日本亚洲欧美视频| 亚洲剧情一区二区| 91精品国产高清久久久久久91| 色妞在线综合亚洲欧美| 国产亚洲a∨片在线观看| 国产欧美在线看| 最近中文字幕mv在线一区二区三区四区| 国产有码在线一区二区视频| 中日韩美女免费视频网站在线观看| 成人免费大片黄在线播放| 91精品国产综合久久久久久蜜臀| 一区二区在线视频播放| 欧美最猛性xxxxx免费| 亚洲www视频| 国产精品午夜国产小视频| 日韩一区二区欧美| 国产欧美日韩最新| 午夜精品久久17c| 中文字幕亚洲一区在线观看| 亚洲国产中文字幕久久网| 2019精品视频| 992tv在线成人免费观看| 亚洲一区二区黄| 日韩色av导航| 精品无人区乱码1区2区3区在线| 精品女同一区二区三区在线播放| 亚洲久久久久久久久久久| 亚洲性猛交xxxxwww| 91精品在线播放| 国产精品第8页| 国产成一区二区| 国产综合在线看| 日韩精品免费一线在线观看| 日韩亚洲一区二区| 国产精品久久久久久亚洲影视| 欧美成人在线影院| 亚洲黄色www| 欧美视频在线观看免费| 国产精品扒开腿爽爽爽视频| 日本精品一区二区三区在线播放视频| 国产精品成人在线| 日韩在线视频观看正片免费网站| 国产女精品视频网站免费| 96pao国产成视频永久免费| 在线播放日韩精品| 中文字幕欧美精品日韩中文字幕| 亚洲天堂久久av| 欧美一区二区三区四区在线| 国产精品h片在线播放| 亚洲欧洲国产精品| 性欧美在线看片a免费观看| 国产精品老牛影院在线观看| 久久亚洲私人国产精品va| 2020国产精品视频| 欧美日韩一二三四五区| 91精品国产高清久久久久久| 91精品国产色综合| 97在线视频精品| 国产精品一香蕉国产线看观看| 美女福利视频一区| 色在人av网站天堂精品| www.午夜精品| 日韩精品在线观看网站| 亚洲第一精品夜夜躁人人爽| 成人a在线视频| 免费97视频在线精品国自产拍| 久久久伊人欧美| 欧美老女人性生活| 国产欧美一区二区三区在线| 中文字幕亚洲综合久久| 久久夜色精品国产亚洲aⅴ| 成人网址在线观看| 日韩av中文在线| 久久免费视频这里只有精品| 欧美大尺度电影在线观看| 97在线免费观看| 青青草精品毛片| 日本精品一区二区三区在线播放视频| 九九热最新视频//这里只有精品| 在线视频精品一| 日产日韩在线亚洲欧美| 亚洲丝袜一区在线| 中文字幕9999| 国产成人精品a视频一区www| 国产视频精品一区二区三区| 国产精品91视频| 久久人人爽人人爽人人片av高清| 久久精品亚洲94久久精品| 国内精品小视频在线观看| 一区二区三区无码高清视频| 色视频www在线播放国产成人| 中文综合在线观看| 91老司机精品视频| 日本精品免费一区二区三区| 色妞久久福利网| 亚洲精品videossex少妇| 亚洲性线免费观看视频成熟| 国产婷婷97碰碰久久人人蜜臀| 欧美丝袜一区二区| 亚洲国产91色在线| 欧美激情中文网| 一区二区三区视频免费在线观看| 一区二区三欧美| 久久久久亚洲精品成人网小说| 97香蕉久久夜色精品国产| 97在线视频观看| 国产精品小说在线| 欧美成年人视频网站| 韩剧1988在线观看免费完整版| 在线观看国产精品日韩av| 国产99视频在线观看| 久久久www成人免费精品张筱雨| 97在线免费观看视频| 日韩高清电影免费观看完整版| 国产精品免费一区二区三区都可以| 日韩精品免费综合视频在线播放| 日韩av在线天堂网| 欧美大片va欧美在线播放| 91麻豆国产语对白在线观看| 亚洲人成绝费网站色www| 亚洲一区第一页| 7777免费精品视频| 亚洲xxx大片| 26uuu亚洲伊人春色| 中文日韩在线观看| 欧美最顶级丰满的aⅴ艳星| 久久久亚洲福利精品午夜| 成人欧美一区二区三区黑人| 国产精品视频免费在线| 98视频在线噜噜噜国产| 亚洲精品成人久久| 久久天堂电影网| 亚洲国产欧美精品| 久久国产精品久久久久久久久久| 亚洲激情电影中文字幕| 欧美放荡办公室videos4k| 亚洲欧美日韩一区二区三区在线| 日韩欧美国产黄色| 欧美极品美女视频网站在线观看免费| 亚洲bt欧美bt日本bt| 美女视频黄免费的亚洲男人天堂| 欧美高清一级大片| 亚洲视频综合网| 亚洲精品国产综合区久久久久久久| 91成人性视频| 欧美老少做受xxxx高潮| 欧美精品第一页在线播放| 国产精品久久久| 国产精品久久久久久久美男| 97在线精品国自产拍中文|