什麼是函式過載?為什麼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,僅僅返回值不同是不能作為函式過載,這屬於函式重定義 形參表包括 引數的型別 ...