函式和運算子的過載

2022-07-15 02:09:11 字數 1512 閱讀 4068

函式的過載:在同乙個作用域內,可以宣告幾個功能類似的同名函式,但是這些同名函式的形式引數(指引數的個數、型別或者順序)必須不同。您不能僅通過返回型別的不同來過載函式。

1 #include 2

using

namespace

std;34

class

calculation511

static

int getsum(int a, int b ,int

c)12

15/*

static double getsum(int a, int b) //這裡因為只改變了返回型別,並沒有過載函式,所以會報錯

16*/

19static

double getsum(double a, double

b)20

23static

double getsum(double a, double b, double

c)24

27};

2829

intmain()

30

結果為: 11

6.5 

運算子的過載:過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。與其他函式一樣,過載運算子有乙個返回型別和乙個引數列表。大多數的過載運算子可被定義為普通的非成員函式或者被定義為類成員函式。假設我們過載「+」,如果我們定義的函式為類的非成員函式,那麼我們需要為每次操作傳遞兩個引數,如果是類成員函式就只需要傳遞乙個。運算子的過載講道理我感覺掌握的很差,等以後有機會了再回來重新深入一下吧,現在暫時知道就好。下面說一下過載運算子的方式:返回型別 operator運算子(引數)  舉個栗子: bool opreator-() 這個過載函式是成員函式,為什麼?因為「-」這個運算子我們至少需要乙個引數,可是它乙個都沒有那就只能是它自己的類。

1 #include 2

using

namespace

std;34

class

studnet519

};20

2122

intmain()

23

我們先看結果為: 11

30 ,我們發現形參d的變數的和是st1的變數的和(sum),說明了當這個過載函式是類成員函式的時候,它的形參的傳值就是它的後面的這個引數(st1)。而this指的是st2。為什麼是這樣的呢,我們假如

int a = 10

;int b = 10

;a.add(b) 相當於 a+b

這樣就自然很清楚了。如果是非成員函式也是一樣的道理,只不過變成了兩個引數。下面再來說說const和&的搭配使用:&是為了引用傳遞,防止值傳遞的複製資料,const是為了保護資料不被改動。const&防止傳值時拷貝建構函式的呼叫開銷。

因為當我們使用值傳遞的時候,形參是實參的副本(複製)。

Swift 運算子過載和運算子函式

讓已有的運算子對自定義的類和結構進行運算或者重新定義已有運算子的運算規則,這種機制被稱為運算子過載。1,通過過載加號運算子,使自定義的兩個座標結構體物件實現相加 12 3456 78910 11structcenterpointer func left centerpointer,right cen...

C 運算子過載和函式過載

c 允許在同一作用域中的某個函式和運算子指定多個定義,分別稱為函式過載和運算子過載。過載宣告是指乙個與之前已經在該作用域內宣告過的函式或方法具有相同名稱的宣告,但是它們的引數列表和定義 實現 不相同。當呼叫乙個過載函式或過載運算子時,編譯器通過把您所使用的引數型別與定義中的引數型別進行比較,決定選用...

C 過載函式運算子和過載函式

c 允許在同一作用域中的某個函式和 運算子指定多個定義,分別稱為 函式過載 和運算子過載 過載宣告是指乙個與之前已經在該作用域內宣告過的函式或方法具有相同名稱的宣告,但是它們的引數列表和定義 實現 不相同。當您呼叫乙個 過載函式 或過載運算子 時,編譯器通過把您所使用的引數型別與定義中的引數型別進行...