C++過載函式的注意事項
阿新 • • 發佈:2020-08-08
#include<iostream> using namespace std; /** * 函式過載注意事項 * 1,函式過載和引用引數 * 變數引用和常量引用被編譯器視為不同的型別, 對於兩個函式名相同的函式的某個引數, 一個是變數引用型別, 一個是常量引用型別, 可以過載 * 此時呼叫時, 給該引數傳入變數即呼叫使用變數引用的引數的函式, 傳入常量則呼叫使用常量引用的引數的函式 * 2,函式過載和預設引數 * 最好不要在過載函式中使用預設引數, 很容易導致語句的二義性, 導致程式執行出錯 */ //函式過載和引用型別引數 //變數引用 void func(int &a){ cout<< "call function func(int &a)!" << endl; } //常量引用 void func(const int &a){ cout << "call function func(const int &a)!" << endl; } //使用預設函式的過載函式 void func2(int a, int = 10){ cout << "call function func(int a, int = 10)!" <<endl; } void func2(int a){ cout<< "call function func(int a)!" <<endl; } int main() { int a = 10; /*func(a);*/ //output: //call function func(int &a)! /*func(10);*/ //output: //call function func(const int &a)! /*func2(10);*/ //Call to 'func2' is ambiguous system("pause"); return 0; }