C 中的運算子過載

2021-08-29 14:10:55 字數 1679 閱讀 3921

前言:

我們可以重定義或過載大部分 c++ 內建的運算子。這樣,您就能使用自定義型別的運算子。

過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。與其他函式一樣,過載運算子有乙個返回型別和乙個引數列表。

宣告加法運算子用於把兩個 box 物件相加,返回最終的 box 物件。大多數的過載運算子可被定義為普通的非成員函式或者被定義為類成員函式。如果我們定義上面的函式為類的非成員函式,那麼我們需要為每次操作傳遞兩個引數,如下所示:

box operator+(const box&, const box&);
下面的例項使用成員函式演示了運算子過載的概念。在這裡,物件作為引數進行傳遞,物件的屬性使用 this 運算子進行訪問,如下所示:

#include using namespace std;

class box

void setlength( double len )

void setbreadth( double bre )

void setheight( double hei )

// 過載 + 運算子,用於把兩個 box 物件相加

box operator+(const box& b)

private:

double length; // 長度

double breadth; // 寬度

double height; // 高度

};// 程式的主函式

int main( )

{ box box1; // 宣告 box1,型別為 box

box box2; // 宣告 box2,型別為 box

box box3; // 宣告 box3,型別為 box

double volume = 0.0; // 把體積儲存在該變數中

// box1 詳述

box1.setlength(6.0);

box1.setbreadth(7.0);

box1.setheight(5.0);

// box2 詳述

box2.setlength(12.0);

box2.setbreadth(13.0);

box2.setheight(10.0);

// box1 的體積

volume = box1.getvolume();

cout << "volume of box1 : " << volume 當上面的**被編譯和執行時,它會產生下列結果:

volume of box1 : 210

volume of box2 : 1560

volume of box3 : 5400

可過載運算子/不可過載運算子

下面是可過載的運算子列表:

下面是不可過載的運算子列表:

.:成員訪問運算子

., ->:成員指標訪問運算子

:::域運算子

sizeof:長度運算子

?::條件運算子

#: 預處理符號

C 中運算子過載

運算子過載使得使用者自定義的資料以一種更簡潔的方式工作。比如int x,y 可以為y x y 而 my c1,c2 如果想使得兩個自定義的物件相加,以前只能調 用函式計算它們的和。而現在只要定義了運算子過載就能實現c1 c1 c2.所謂過載,就是重新賦予新的含義。函式過載就是對乙個已有的函式賦予新的...

C 中運算子過載

運算子過載可以寫在類的內部,也可以寫成全域性函式形式,其中運算子 在過載時必須宣告為類的成員函式 而運算子 sizeof 不能被過載 演算法運算子的過載不會改變運算子原有的優先順序。例子 include include include using namespace std class comple...

C 中的運算子過載(一) 運算子過載的概念

概述 運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別。運算子過載 operator overloading 只是一種 語法上的方便 也就是它只是另一種函式呼叫的方式,只是為了方便我們使用,運算子只能運算內建的資料型別,對於自定義的資料型別不能運算,所以我們可以過載...