一.預設參數
1.預設參數概念
- 預設參數是聲明或定義函數時為函數的參數指定一個預設值。
- 在調用該函數時,如果沒有指定實參則采用該預設值,否則使用指定的實參。
-
void Func1(int a = 0) { cout << a << endl; } int main() { Func(); // 沒有傳參時,使用參數的預設值,輸出結果為0 Func(10); // 傳參時,使用指定的實參,輸出結果為10 }
2.預設參數分類
2.1半預設參數
注意:void Func2(int a, int b = 2, int c = 3) {//調用此函數時必須給a傳參數 cout << "a=" << a << endl; cout << "b=" << b << endl; cout << "c=" << c << endl; }
- 規定隻能從右往左預設,不能從左往右或者間隔預設。
- 錯誤示例1:
錯誤示例2:void Func3(int a = 1, int b, int c) { cout << "a=" << a << endl; cout << "b=" << b << endl; cout << "c=" << c << endl; }
void Func4(int a = 1, int b, int c=3) { cout << "a=" << a << endl; cout << "b=" << b << endl; cout << "c=" << c << endl; }
- 預設參數不能在函數聲明和定義中同時出現
-
2.2全預設參數//test.h void TestFunc(int a = 10); // test.c void TestFunc(int a = 20) {} // 注意:如果在聲明與定義位置同時出現,恰巧兩個位置提供的值不同,那編譯器就無法确定到底該用哪個預設值。
void Func5(int a=1, int b = 2, int c = 3) {//此函數在調用時可以不傳任何參數 cout << "a=" << a << endl; cout << "b=" << b << endl; cout << "c=" << c << endl; }
- 預設值必須是常量或者全局變量
- C語言不支援使用預設參數(編譯器不支援)