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,隻能使用第二個參數。