国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

C++中運算符重載的規則語法實例

2020-01-26 13:37:34
字體:
來源:轉載
供稿:網友

運算符重載,就是對已有的運算符重新進行定義,賦予其另一種功能,以適應不同的數據類型。

之前就知道運算符的重載就是將它重新定義,給它新的功能,為的式符合程序員的要求,一個例子就是,要將坐標相加,但是電腦不知道怎么相加,于是聰明的人就賦予了“+”新的定義。然而一些嚴格意義上的用法還不是很清楚。現在就在這總結一下。

首先運算符重載的規則如下:

①、 C++中的運算符除了少數幾個之外,全部可以重載,而且只能重載C++中已有的運算符。 

不能重載的運算符只有五個,它們是:成員運算符“.”、指針運算符“*”、作用域運算符“::”、“sizeof”、條件運算符“?:”。

②、 重載之后運算符的優先級和結合性都不會改變。 

③、 運算符重載是針對新類型數據的實際需要,對原有運算符進行適當的改造。一般來說,重載的功能應當與原有功能相類似,不能改變原運算符的操作對象個數,同時至少要有一個操作對象是自定義類型。 

運算符重載為類的成員函數的一般語法形式為: 

函數類型 operator 運算符(形參表) {  函數體; } 

干脆將一些運算符重新列出下一下:

可以用作重載的運算符:

  • 算術運算符:+,-,*,/,%,++,--;
  • 位操作運算符:&,|,~,^,<<,>>
  • 邏輯運算符:!,&&,||;
  • 比較運算符:<,>,>=,<=,==,!=;
  • 賦值運算符:=,+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=;
  • 其他運算符:[],(),->,,(逗號運算符),new,delete,new[],delete[],->*

下列運算符不允許重載:

.,.*,::,?:(上面也說了的)

下面給例子

Boxoperator+(const Box&, const Box&);

聲明加法運算符用于把兩個 Box 對象相加,返回最終的 Box 對象。大多數的重載運算符可被定義為普通的非成員函數或者被定義為類成員函數。如果我們定義上面的函數為類的非成員函數,那么我們需要為每次操作傳遞兩個參數,如上面所示。

下面給一個比較完整的代碼:

#include <iostream>using namespace std;class Person{public:  Person(int num) : age(num){}  /* 類成員函數 */  int operator+(const Person &temp){    return (this->age+temp.age);  }  int age;};/* 非類成員函數 */int operator-(const Person &a, const Person &b){  return (a.age-b.age);}int main(){  Person John(20), Tom(18);  cout << John+Tom << endl;  cout << John-Tom << endl;  return 0;}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 九江市| 桐梓县| 岢岚县| 隆子县| 黎川县| 永城市| 崇州市| 台东市| 松潘县| 祁东县| 安乡县| 温州市| 云梦县| 民乐县| 社旗县| 伊春市| 肃宁县| 贵阳市| 太湖县| 瑞丽市| 塔河县| 绩溪县| 中江县| 裕民县| 叶城县| 诸暨市| 普兰县| 汽车| 舒兰市| 长兴县| 长岭县| 鄄城县| 东阿县| 二手房| 原阳县| 崇义县| 宁河县| 锡林浩特市| 浮山县| 霍林郭勒市| 合山市|