天天看點

【C++筆記】 預設參數

一.預設參數

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:
    void Func3(int a = 1, int b, int c)
    {
    	cout << "a=" << a << endl;
    	cout << "b=" << b << endl;
    	cout << "c=" << c << endl;
    }
               
    錯誤示例2:
    void Func4(int a = 1, int b, int c=3)
    {
    	cout << "a=" << a << endl;
    	cout << "b=" << b << endl;
    	cout << "c=" << c << endl;
    }
               
  • 預設參數不能在函數聲明和定義中同時出現
  • //test.h
    void TestFunc(int a = 10);
    // test.c
    void TestFunc(int a = 20)
    {}
    // 注意:如果在聲明與定義位置同時出現,恰巧兩個位置提供的值不同,那編譯器就無法确定到底該用哪個預設值。
               
    2.2全預設參數
    void Func5(int a=1, int b = 2, int c = 3)
    {//此函數在調用時可以不傳任何參數
    	cout << "a=" << a << endl; 
    	cout << "b=" << b << endl;
    	cout << "c=" << c << endl;
    }
               
  • 預設值必須是常量或者全局變量
  • C語言不支援使用預設參數(編譯器不支援)

繼續閱讀