C++ 速查手冊
8.4 - 預設參數
函數可以有預設參數 (default parameter) ,也就是替參數設定預設值,例如
#include <iostream>
void do_something(int n = 22) {
std::cout << n << std::endl;
}
int main() {
do_something(11);
do_something();
do_something();
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:u0804_1.cpp
功能:示範 C++ 的函數
作者:張凱慶*/
替參數 n 設定預設值,就是直接在參數列指派數值
void do_something(int n = 22) {
這樣不使用參數也可以呼叫
do_something(11);
do_something();
do_something();
編譯執行,結果如下
$ g++ u0804_1.cpp |
$ ./a.out |
11 |
22 |
22 |
$ |
預設參數可以是選擇性的,也就是可以替特定參數設定預設值,其他參數則須呼叫時填入小括弧,需要注意這樣的預設參數必須放在參數列的後面,例如
#include <iostream>
void do_something2(int n1, int n2 = 5, int n3 = 0) {
std::cout << n1 + n2 + n3 << std::endl;
}
int main() {
do_something2(6);
do_something2(6, 9);
do_something2(3, 4, 5);
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:u0804_2.cpp
功能:示範 C++ 的函數
作者:張凱慶*/
留意 n1 並沒有預設值
void do_something2(int n1, int n2 = 5, int n3 = 0) {
std::cout << n1 + n2 + n3 << std::endl;
}
因此呼叫時至少要有一個參數
do_something2(6);
do_something2(6, 9);
do_something2(3, 4, 5);
編譯執行,結果如下
$ g++ u0804_2.cpp |
$ ./a.out |
11 |
15 |
12 |
$ |
此外要注意參數列的順序,預設參數只能放在參數列的後面,像是下面就無法通過編譯
void do_something2(int n1 = 6, int n2, int n3 = 0) {
相關教學影片