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