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) {

相關教學影片

上一頁 8.3 - 參考參數
回 C++ 速查手冊首頁
下一頁 8.5 - 可變參數
回 C++ 教材
回程式語言教材首頁