C++ 快速導覽 - 函數 預設參數

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

#include <iostream>

void do_something(int n = 22) {
    std::cout << n << std::endl;
}

int main(void)
{
    do_something(11);
    do_something();
    do_something();
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:fundemo09.cpp
    功能:示範 C++ 程式
    作者:張凱慶
    時間:西元 2013 年 1 月 */


參數 n 的預設值為 22
void do_something(int n = 22) {


這樣不使用參數也可以呼叫 (call)
do_something(11);
do_something();
do_something();


編譯執行結果如下



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

void do_something2(int n1, int n2 = 5, int n3 = 0) {
    std::cout << n1 + n2 + n3 << std::endl;
}

int main(void)
{
    do_something2(6);
    do_something2(6, 9);
    do_something2(3, 4, 5);
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:fundemo10.cpp
    功能:示範 C++ 程式
    作者:張凱慶
    時間:西元 2013 年 1 月 */


留意 n1 並沒有預設值
void do_something2(int n1, int n2 = 5, int n3 = 0) {


因此呼叫時至少要有一個參數
do_something2(6);
do_something2(6, 9);
do_something2(3, 4, 5);


編譯執行結果如下



注意參數列 (parameter list) 的順序,像是下面就無法通過編譯
void do_something2(int n1 = 6, int n2, int n3 = 0) {


中英文術語對照
函數function
預設參數default parameter
參數parameter
呼叫call


您可以繼續參考
函數


相關目錄
回 C++ 快速導覽
回 C++ 教材
回首頁


參考資料
C++ reference
cplusplus.com
Cprogramming.com C++ Tutorial

C++ Primer, Fourth Edition, Stanley B. Lippman...

沒有留言: