對於相同的函數名字,根據其輸入的變量不同進行函數重載
/* 根據函數的輸入變量不同進行函數重載 */ #include <iostream> using namespace std; void foo(int i) { cout << "int foo(int i)" << endl; } void foo(int i, int j) { cout << "void foo(int i, int j)" << endl; } void foo(int i, double j) { cout << "void foo(int i, double j)" << endl; } int main(void) { int a = 0; double b = 0; foo(a, b); return 0; }
對於函數重載,如果char->int 表示向上采樣, short -> char 表示向下采樣
/* 變量不匹配進行重載 */ #include <iostream> using namespace std; void func(int i) { // char - > int cout << "func(1)" << endl; } void func(const char i) { // char - > const char cout << "func(2)" << endl; } //sort->char 降級匹配 void foo(char i) { cout << "foo(1)" << endl; } //sort->int 升級匹配 void foo(int i) { cout << "foo(2)" << endl; } //省略匹配 void hum(int i, ...) { cout << "hum(1)" << endl; } //double->int 降級匹配 void hum(int i, int j) { cout << "hum(2)" << endl; } int main() { char c = 2; func(c); short s = 2; foo(s); int i = 0; double j = 0; hum(i, j); }
在開頭進行函數聲明,同時定義變量,使得未輸入的函數有初始值
/* 進行函數聲明和變量預定義 */ #include <iostream> using namespace std; //函數預聲明 void func(int a = 10, int b = 10, int c = 20); int main(void) { func(11, 20, 30); func(11, 20); func(11); } void func(int a, int b, int c) { cout << a << "," << b << "," << c << endl; }