天天看點

C++ 核心 3. 函數進階3 函數進階

3 函數進階

3.1 預設參數

文法:

傳回值類型 函數名(參數=預設值){}
           

e:

int func(int a, int b=10, int c=100){
    return a+b+c;
}
           

注意事項:

1.預設參數應該在非預設參數後面。

錯誤示範:

int func(int a, int b=10 ,int c)

2.函數聲明和實作分開時,函數聲明和函數實作隻能有一個有預設參數。(防止聲明和實作的預設參數值不一緻,沖突)

int func2(int a=10, int b=10);

int func2(int a, int b){
    return a + b;
}
           

3.2 函數占位參數

函數參數隻寫資料類型,不寫參數名:

void func(int a, int){
    cout << "in func" << endl;
}
           

現階段用不到,(這個沒名字的參數怎麼用呢?),後面會用到。

3.3 函數重載

  • 作用域相同
  • 函數名稱相同
  • 函數參數不同(類型、個數、順序)
void func(){
    cout << "func1"<< endl;;
}

void func(int a){
    cout << "func2"<< endl;;
}
           

函數重載注意事項

  • 引用作為重載條件
void func(int &a){
    cout << "func1"<< endl;;
}

void func(const int &a){
    cout << "func2"<< endl;;
}
           
  • 函數重載與預設參數
void func(int a){
    cout << "func1"<< endl;;
}

void func(int a, int b=10){
    cout << "func2"<< endl;;
}
//不行,如果調用
func(10);// wrong, 無法決定使用哪個函數。

func(1,2) // right,隻能使用第二個參數。
           

繼續閱讀