c 中的過載

2021-07-03 22:50:54 字數 1784 閱讀 6304

c++中的過載

c++中的過載包含函式過載和運算子過載,編譯時的多型性就是由這兩種過載實現的。

一、函式過載

函式過載:兩個以上的函式有相同的函式名,但是函式的形參個數或者型別不同,編譯器會根據實參與形參的型別和個數進行最佳匹配,自動決定呼叫哪乙個函式。

int add(int m,int n); // 函式呼叫前必須先宣告函式原型

float add(float x,float y);

int main()

};complex operator+(complex com1,complex com2)

int main();

類外定義格式:

返回型別 operator運算子(參數列)

友元函式過載雙目運算子(有兩個運算元,通常在運算子的左右兩側),參數列中的個數為兩個。若是過載單目運算子(只有乙個運算元),則參數列中只有一引數。

友元函式過載雙目運算子"+"。

class complex //複數類

friend complex operator+(complex com1,complex com2);//友元函式過載雙目運算子+

void showsum();

};complex operator+(complex com1,complex com2)//友元運算子過載函式

void complex::showsum()

friend void operator++(point& point);//友元函式過載單目運算子++

void showpoint();

};void operator++(point& point)//友元運算子過載函式

void point::showpoint();

類外定義形式:

返回型別 類名::operator 運算子(形參表)

對於成員函式過載運算子而言,雙目運算子的參數列中僅有乙個引數,而單目則無引數。同樣的是過載,為什麼和友元函式在引數的個數上會有所區別的。原因在於友元函式,沒有this指標。

成員函式過載雙目運算子"+"

class complex //複數類

complex operator+(complex com1);//成員函式過載雙目運算子+

void showsum();

};complex complex::operator+(complex com1)

void complex::showsum()

void operator++();//成員函式過載雙目運算子++

void showpoint();

};void point::operator++()

void point::showpoint()

complex operator+(int x);

void showsum();

};complex complex::operator+(int x)

void complex::showsum()

friend complex operator+(int x,complex com1);

void showsum();

};complex operator+(int x,complex com1)

void complex::showsum()

{ std::cout<0)

std::cout<<"+";

if(imag!=0)

std::cout<

C 中的過載

函式過載 用同一函式名定義不同的函式,當函式名和不同的引數搭配時函式的含義不同。函式過載至少滿足一下的乙個條件 引數個數不同 引數型別不同 引數順序不同 函式的返回值不是函式過載的判斷標準 預設引數和過載在一起,會報錯,產生二義性 void func inta,intb intc 0 void fu...

c 中的過載

出現在相同作用域的二個函式如果具有相同的名字而形參不同,則稱為過載函式。在這個定義中有二個注意點 1.是在相同的作用域,如果,不在相同的作用域,即使形參不同zhe,也不算作是過載函式 比如一下的例子 void print const string s void print double d void...

C 中的函式過載

你可以重新定義或過載的大部分 c 已有的操作符。因此,程式設計師可以像使用使用者自定義型別一樣使用操作符。過載操作符是一類函式,它們就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別。像任何其它函式,過載運算子也有返回型別和引數列表。box operator const box ...