函式過載和函式模板

2021-10-21 17:44:41 字數 1382 閱讀 7397

要求:1) 函式名相同

2) 引數不同(型別,個數或順序)

但注意:

認為這些型別相同:

int a和int&a;(呼叫時都寫成f(a)?

int*a和int a;

(呼叫函式時輸入的東西相同)

不能以形參名,返回值作為區分。

#include

using

namespace std;

void

out(

int a)

void

out(

char a)

//型別不同

void

out(

int a,

int b)

//引數個數不同

//引數順序不同

void

out(

int a,

char b)

void

out(

char a,

int b)

intmain()

#include

using

namespace std;

void

out(

int a,

int b)

//1int

out(

int* a,

int& b)

//2int

out(

int a,

int b)

//3 錯誤,不能僅靠函式返回值的型別進行過載

intout

(int

& a,

int& b)

//4 錯誤,和第乙個重複,注意引用會跟第乙個整數的形參重複

void

out(

int* a,

int* b)

//5 但是指標不會和整數為形參的重複

intmain()

注意:

型別引數(class或typename後面的)至少有乙個

#include

using

namespace std;

template

<

class

s>

//這裡的class可以用typename代替,後面寫型別引數名

void

out(s a)

//用s表示,可傳遞任何型別

intmain()

;out

(a);

//注意,對於陣列傳遞的是陣列的首位址,輸出的是陣列的首位址

char b[10]

=;out(b)

;}

C 函式過載和函式模板

過載 不同的東西在不同場合有不同的含義,一物多用 例如 和 可以是移位運算子,在c 也是輸入輸出運算子 cout 和cin 函式過載 同名函式實現不同功能。函式過載實現方式 引數型別和引數個數至少乙個不同即可。優點 函式過載將相同或類似功能的函式用乙個函式名,但仍然要定義每個函式,於是函式模板派上用...

函式過載與函式模板

函式過載與函式模板 在我們要實現類似的函式功能時,但他們的資料型別或者個數不一樣,這時就需要用到函式過載 求3個數中最大的數 分別考慮整數 雙精度數 長整數的情況 include using namespace std int main int max int a,int b,int c 定義求3個...

函式模板及函式過載

問題描述 編寫乙個函式模版,能夠處理整數 實數 串類物件的大小比較,返回兩個值中的最小者。為了能夠處理字元陣列儲存的字串的大小比較,則需要使用函式過載的形式。為了能夠處理串類物件的大小比較,則需要對串類實現關係運算子 或 的過載。主函式如下,請勿修改 int main string string c...