1. 程式人生 > 實用技巧 >C++過載函式的注意事項

C++過載函式的注意事項

#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; }