c++預設參數

來源:互聯網
上載者:User

 在C++中,可以為參數指定預設值。在函數調用時沒有指定與形參相對應的實參時, 就自動使用預設參數。

預設參數的文法與使用:
(1)在函式宣告或定義時,直接對參數賦值。這就是預設參數;
(2)在函數調用時,省略部分或全部參數。這時可以用預設參數來代替。

注意:
(1)預設參數只可在函式宣告中設定一次。只有在無函式宣告時,才可以在函數定義中設定。
(2)預設參數定義的順序為自右到左。即如果一個參數設定了預設值時,其右邊的參數都要有預設值。
如:int mal(int a, int b=3, int c=6, int d=8)    正確,按從右至左順序設定預設值。
        int mal(int a=6, int b=3, int c=5, int d)  錯誤,未按照從右至左設定預設值。c設定預設值了,而其右邊的d沒有預設值。
(3)預設參數調用時,則遵循參數調用順序,自左到右逐個調用。這一點要與第(2)分清楚,不要混淆。
如:void mal(int a, int b=3, int c=5);      //預設參數
        mal(3, 8, 9 );                                      //調用時有指定參數,則不使用預設參數
        mal(3, 5);                  //調用時只指定兩個參數,按從左至右順序調用,相當於mal(3,5,5);
        mal(5);                      //調用時只指定1個參數,按從左至右順序調用,相當於mal(5,3,5);
        mal(  );                      //錯誤,因為a沒有預設值
        mal(3,  , 9)               //錯誤,應按從左至右順序逐個調用
再如: void mal(int a=8, int b=3, int c=5);      //預設參數
             mal(  );                                                      //正確,調用所有預設參數,相當於mal(8,3,5);

(4)預設值可以是全域變數、全域常量,甚至是一個函數。但不可以是局部變數。因為預設參數的調用是在編譯時間確定的,而局部變數位置與預設值在編譯時間無法確定。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.