C++ 速查手冊 V1.00 - 單元 8.4 - 預設參數




函數可以有預設參數 (default parameter) ,也就是替參數設定預設值,例如


001 #include <iostream>
002
003 void do_something(int n = 22) {
004    std::cout << n
005              << std::endl;
006 }
007
008 int main() {
009    do_something(11);
010    do_something();
011    do_something();
012
013    return 0;
014 }
015
016 /* Kaiching Chang 
017    u0804_1.cpp
018    2014-02 */

替參數 n 設定預設值,就是直接在參數列指派數值


003 void do_something(int n = 22) {

這樣不使用參數也可以呼叫


009 do_something(11);
010 do_something();
011 do_something();

編譯執行,結果如下


$ g++ u0804_1.cpp
$ ./a.out
11
22
22
$

預設參數可以是選擇性的,也就是可以替特定參數設定預設值,其他參數則須呼叫時填入小括弧,需要注意這樣的預設參數必須放在參數列的後面,例如


001 #include <iostream>
002
003 void do_something2
004 (int n1, int n2 = 5, int n3 = 0) {
005    std::cout << n1 + n2 + n3
006              << std::endl;
007 }
008
009 int main() {
010    do_something2(6);
011    do_something2(6, 9);
012    do_something2(3, 4, 5);
013
014    return 0;
015 }
016
017 /* Kaiching Chang 
018    u0804_2.cpp
019    2014-02 */

留意 n1 並沒有預設值


003 void do_something2
004 (int n1, int n2 = 5, int n3 = 0) {

因此呼叫時至少要有一個參數


010 do_something2(6);
011 do_something2(6, 9);
012 do_something2(3, 4, 5);

編譯執行,結果如下


$ g++ u0804_2.cpp
$ ./a.out
11
15
12
$

此外要注意參數列的順序,預設參數只能放在參數列的後面,像是下面就無法通過編譯


003 void do_something2
004 (int n1 = 6, int n2, int n3 = 0) {

continue ...

沒有留言: