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

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

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

2020-05-23 13:24:53
字體:
來源:轉載
供稿:網友

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

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

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

①、 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;}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凌源市| 乐山市| 修文县| 台北市| 沂水县| 台湾省| 通州区| 英超| 吉首市| 定西市| 米林县| 景宁| 图木舒克市| 九寨沟县| 家居| 通榆县| 翁牛特旗| 嫩江县| 昌图县| 尖扎县| 大余县| 石屏县| 体育| 山阳县| 甘德县| 班戈县| 洱源县| 宜昌市| 巩义市| 溧阳市| 长子县| 天祝| 沾益县| 商城县| 绍兴县| 阿拉善左旗| 大宁县| 徐汇区| 兖州市| 元阳县| 谷城县|