函式的預設引數

2021-07-03 05:17:49 字數 1024 閱讀 7380

c++中只能定義一次預設值,即原型說明時定義了預設值,後面的函式定義不能有預設值,且預設引數都必須是從右到左定義,呼叫時實參對形參的初始化必須是從左向右的

比如:函式宣告

f(int i=5);
定義了預設值。

後面對f的函式定義時就不需要提供預設值了:

f(int i)

即函式定義不能寫成:

f(int i=5)

為什麼是這樣呢?

一方面是因為編譯器在編譯時遇到f的函式呼叫只去檢查函式宣告,至於函式有沒有實現則是鏈結階段的事,如果沒有函式實現則鏈結出錯,編譯仍正確,只要函式宣告與函式呼叫一致!

另一方面是因為在函式定義時如果也允許提預設值,那麼如果函式定義的預設值與函式宣告的預設值不一樣怎麼辦?比如f宣告時預設值為5,定義時預設值為6,這就會出現歧義。

c++在宣告函式原型時,可為乙個或多個引數指定預設引數值,以後呼叫此函式,若省略其中某一引數,c++自動地以預設值作為相應引數的值。例如函式原型說明為: 

int special(int x=5,float y=5.3); 

當進行函式呼叫時,可以有以下幾種形式: 

1)  special(100,79.8); // x=100,y=79.8 

2)  special(25); // x=25,y=5.3 

3)  special(); // x=5,y=5.3

說明: 

1.只能在宣告時設定預設引數 

2.預設引數都必須是從右到左定義 

如:int fun(int i,int j=5,int k);//錯誤,k未使用 

3.預設引數都必須是從右到左定義,呼叫時實參對形參的初始化必須是從左向右的

//預設引數

#include void func(int x,int y=10,int z=20);

void main()

void func(int x,int y,int z)

{   cout<

C (帶有預設引數的函式引數)預設函式引數

預設引數?在c 中,允許實參的個數與形參的個數不同。在宣告函式原型時,為乙個或者多個形參指定預設值,以後呼叫這個函式時,若省略某乙個實參,c 則自動的以預設值作為相應引數的值。實列說明 includeusing namespace std int add int x 4,int y 7 int ma...

函式的預設引數

c 在宣告函式原型的時候,可以為乙個或多個引數指定預設引數值,當函式呼叫的時候,如果沒有指定這個值,編譯器會自動用預設值替代。void fun int a 1,int b 2 int main 注意點 1.void fun int a,int b 1,int c 2 若形參b是預設引數,那麼形參c必...

函式的預設引數

預設引數指的是當函式呼叫中省略了實參時,自動使用的乙個值 例如,如果將函式 void wow int n 設定成 n 預設值為1,則呼叫函式 wow 相當於 wow 1 1.如何設定預設值?必須通過函式原型。例如,函式 left 的原型如下,此函式輸入乙個字串,並返回字串的前 n 個字元 char ...