c 整理 函式過載

2021-08-17 11:03:29 字數 1538 閱讀 4768

什麼是函式過載?為什麼c語言不支援函式過載,而c++能支援函式過載?

解析:函式過載是用來描述同名函式具有相同或者相似的功能,但資料型別或者是引數不同的函式管理操作。在c語言裡需要寫兩個不同名稱的函式來進行區分。

#include using namespace std;  

class test

float add(float x, float y) //相加,傳入引數以及返回值都是float

};

int add(int x, int y) //相加,傳入引數以及返回值都是int

float add(float x, float y) //相加,傳入引數以及返回值都是float

int main()

{ int i = add(1, 2);

float f = add(1.1f, 2.2f);

test test;

int i1 = test.add(3, 4);

float f1 = test.add(3.3f, 4.4f);

cout<<"i = "總結:函式過載是用來描述同名函式具有相同或者相似的功能,但資料型別或者是引數不同的函式管理操作。

函式名經過c++編譯器處理後包含了原函式名、函式引數數量及返回型別資訊,而c語言不會對函式進行處理。

(a) int calc(int, int);

int cale(const int, const int);

(b) int get();

double get();

(c) int *reset(int*);

double *reset(double*);

(d) extern "c" int compute(int *, int);

extern "c" double compute(double*, double);

a錯誤。第二個函式被視為重複宣告,第二個宣告中的const修飾詞會被忽略。

b錯誤。第二個宣告是錯誤的,因為單就函式的返回值而言,不足以區分兩個函式的過載。

c正確。這是合法的宣告,reset()函式被過載。

d錯誤。第二個函式宣告是錯誤的,因為在一組過載函式中,只能有乙個函式被指定為extern "c"

過載是指子類改寫了父類的方法,覆寫是指同乙個函式的不同版本之間引數不同。

過載是編寫乙個與已有函式同名但是參數列不同(引數數量或引數型別不同)的方法,它具有如下特徵:

(1)方法名必須相同。

(2)引數列表必須不相同,與引數列表的順序無關。

(3)返回值型別可以不相同。

覆寫是派生類重寫基類的虛函式,它具有如下如示的特徵。

(1)只有虛函式的抽象方法才能被覆寫。

(2)相同的函式名

(3)相同的引數列表

(4)相同的返回值型別

過載是一種語法規則,有編譯器在編譯階段完成,不屬於物件導向程式設計;而覆寫是由執行階段決定的,是物件導向程式設計的重要特徵。

mysql 函式過載 C 方法過載(函式過載)

在講解 c 構造方法 時提到定義構造方法時提到可以定義帶 0 到多個引數的構造方法,但構造方法的名稱必須是類名。實際上,這就是乙個典型的方法過載,即方法名稱相同 引數列表不同。引數列表不同主要體現在引數個數或引數的資料型別不同。在呼叫過載的方法時系統是根據所傳 遞引數的不同判斷呼叫的是哪個方法。例項...

C 函式 函式過載

如果同一作用域內的幾個函式名字相同但形參列表不同,我們稱之為過載函式。void print const char cp void print const int beg,const int end void print const int ia,size t size 這些函式接受的形參型別不一樣,...

C 函式過載

函式過載 overloaded function 在相同的作用域中的兩個函式,如果有相同的名字而形參表不同 注意 如果僅僅函式的返回值不同是不能實現函式過載 void func int int func int error,僅僅返回值不同是不能作為函式過載,這屬於函式重定義 形參表包括 引數的型別 ...