要求: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...