函數可以有預設參數 (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 ...
沒有留言:
張貼留言