程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++基礎知識 >> C++函數的默認參數

C++函數的默認參數

編輯:C++基礎知識
在C++中,定義函數時可以給形參指定一個默認的值,這樣調用函數時如果沒有給這個形參賦值(沒有對應的實參),那麼就使用這個默認的值。也就是說,調用函數時可以省略有默認值的參數。如果用戶指定了參數的值,那麼就使用用戶指定的值,否則使用參數的默認值。

所謂默認參數,指的是當函數調用中省略了實參時自動使用的一個值,這個值就是給形參指定的默認值。下面是一個簡單的示例:
#include<iostream>
using namespace std;

//帶默認參數的函數
void func(int n, float b=1.2, char c='@'){
    cout<<n<<", "<<b<<", "<<c<<endl;
}

int main(){
    //為所有參數傳值
    func(10, 3.5, '#');
    //為n、b傳值,相當於調用func(20, 9.8, '@')
    func(20, 9.8);
    //只為n傳值,相當於調用func(30, 1.2, '@')
    func(30);

    return 0;
}
運行結果:
10, 3.5, #
20, 9.8, @
30, 1.2, @

本例定義了一個帶有默認參數的函數 func(),並在 main() 函數中進行了不同形式的調用。為參數指定默認值非常簡單,直接在形參列表中賦值即可,與定義普通變量的形式類似。

指定了默認參數後,調用函數時就可以省略對應的實參了。

默認參數除了使用數值常量指定,也可以使用表達式指定,例如:
float d = 10.8;
void func(int n, float b=d+2.9, char c='@'){
    cout<<n<<", "<<b<<", "<<c<<endl;
}

C++規定,默認參數只能放在形參列表的最後,而且一旦為某個形參指定了默認值,那麼它後面的所有形參都必須有默認值。實參和形參的傳值是從左到右依次匹配的,默認參數的連續性是保證正確傳參的前提。

下面的寫法是正確的:
void func(int a, int b=10, int c=20){ }
void func(int a, int b, int c=20){ }
但這樣寫不可以:
void func(int a, int b=10, int c=20, int d){ }
void func(int a, int b=10, int c, int d=20){ }

默認參數並非編程方面的重大突破,而只是提供了一種便捷的方式。在以後設計類時你將發現,通過使用默認參數,可以減少要定義的析構函數、方法以及方法重載的數量。

本節的例子中,我們在函數定義處指定了默認參數。除了函數定義,你也可以在函數聲明處指定默認參數。不過當出現函數聲明時情況會變得稍微復雜,很多書籍也對這點含糊其辭,我們將在下節《到底在聲明中還是定義中指定默認參數》中詳細講解。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved