從0開擼C (四) 函式過載和運算子過載

2021-10-09 15:21:22 字數 1368 閱讀 4152

本期主題:

c++中的函式過載和運算子過載

2.過載加號運算子

person::

person()

person::

person

(string name)

person::~

person()

intmain

(void

)gary@ubuntu:

~/workspaces/cpp_study/

2.6.operator_overload$ .

string

this is default deconstructor

//再看乙個例子,對printf的過載

class

printdata

void

print

(double f)

void

print

(char c)

};intmain

(void

)gary@ubuntu:

~/workspaces/cpp_study/

2.6.operator_overload$ .

整數為:

5浮點數為:

500.263

字串為: hello c++

過載的本質實際上是由編譯器在實際呼叫時,根據實參的具體情況來判斷本次呼叫使用哪個實際函式,這個過程被稱為過載決策;

過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。

看乙個實際的例子,用過載的加號運算子來實現向量的加法

class

coordinate

;coordinate::

coordinate()

coordinate::

coordinate

(int x0,

int y0)

void coordinate::

print

(void

)coordinate coordinate::

operator+(

const coordinate& other)

//第乙個coordinate代表返回型別,第二個coordinate代表類名,operator+就是代表要過載運算子+

intmain

(void

)gary@ubuntu:

~/workspaces/cpp_study/

2.6.operator_overload$ ./(

3,6)

C 運算子過載和函式過載

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

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

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

C 運算子過載(四)

c 允許在自己的類中,或是在全域性作用域中重定義運算子的含義。由於很多物件導向的語言沒有提供這種能力,因此你可能會低估這種特性在c 中的作用。c 中運算子的概念十分廣泛,甚至包含 陣列索引 函式呼叫 型別轉換以及記憶體分配和釋放例程。可以通過運算子過載來改變語言運算子對自定義類的行為。能讓自己的類具...