C 中的函式過載

2021-07-26 20:48:24 字數 1859 閱讀 4932

你可以重新定義或過載的大部分 c++ 已有的操作符。因此,程式設計師可以像使用使用者自定義型別一樣使用操作符。 

過載操作符是一類函式,它們就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別。像任何其它函式,過載運算子也有返回型別和引數列表。

box operator+(const box&);

宣告加法運算子可以用來使兩個 box 物件相加並返回最終 box 物件。大多數過載運算子可以被定義為普通非成員函式或類成員函式。如果我們把上面的函式定義為乙個類的非成員函式,那麼我們就必須為每個運算元傳兩個引數如下:

box operator+(const box&, const box&);
下面是通過使用成員函式來展示運算子過載的概念的示例。這裡乙個物件作為乙個引數被傳遞,通過訪問這個物件可以獲得引數的屬性,將呼叫這個操作符的物件可以通過使用 this 操作符獲得,下面這個例子展示了這一點:

#includeusing namespace std;

class box

void setlength(double len)

void setbreadth(double bre)

void setheight( double hei )

box operator + (const box &other)//第一種過載方式

public:

double length;

double breadth;

double height;

};box operator + (const box &ths, const box &other)//第二種過載方式

int main()

{ box box1, box2, box3;

double volume = 0;

box1.setlength(6.0);

box1.setbreadth(7.0);

box1.setheight(5.0);

box2.setlength(12.0);

box2.setbreadth(13.0);

box2.setheight(10.0);

volume = box1.getvolume();

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

volume of box1 : 210

volume of box2 : 1560

volume of box3 : 5400

下面這張表列舉了可以過載的運算子:+-

*/%^

&|~!

,=<

>

<=

>=

++--

<<

>>

==!=

&&||

+=-=

/=%=

^=&=

|=*=

<<=

>>=

[ ]()

->

->*

newnew[ ]

delete

delete[ ]

下面這張表列舉了不可以過載的運算子:

::.*.?:

這裡有各種操作符過載的例子來幫助你理解這一概念。

序號運算子和例子

1一元運算子過載

2二元運算子過載

3關係運算子過載

4輸入/輸出運算子過載

5++ 和 -- 運算子過載

6賦值運算子過載

7函式 call() 運算子過載

8下標[ ]運算子過載

9類成員獲取運算子 -< 過載

c 中的函式過載

回學校搞畢設,複習一下c 今天就專門講一下函式過載 函式過載 c 允許在同一作用域中用同一函式名定義多個函式,這些函式的引數個數和引數型別不相同,這些同名的函式用 來實現不同的功能,這就是函式的過載。首先是函式名相同 要求這些函式的引數和引數型別可以都不同,也就是說過載函式的引數個數和型別必須至少有...

c 中的函式過載

include using namespace std class base public void func int a cout this is a 以上程式執行編譯會報錯 void base func int cannot be overloaded 即函式不能構成過載,原因分別為 注意,如果...

C 中的函式過載

同一作用域內,函式名字相同但形參列表不同,就稱之為過載函式。notes main函式不能過載 定義過載函式 對於過載函式來說,它們應該在形參數量或形參型別上有所不同。判斷兩個形參的型別是否相異 形參數量 型別相同,只是名字不同也算是相同的 過載和const形參 乙個擁有頂層const的形參無法和另乙...