c 函式中的預設引數

2021-07-29 05:33:59 字數 1233 閱讀 4149

函式的預設引數值,即在定義引數的時候同時給它乙個初始值。在呼叫函式的時候,我們可以省略含有預設值的引數。也就是說,如果使用者指定了引數值,則使用使用者指定的值,否則使用預設引數的值。

void func(int i = 1, float f = 2.0f, double d = 3.0

)int main(void

)

引數的值也可以是表示式,這樣,表示式將在函式被呼叫的時候求值,比如下面的func函式,第二個引數值是通過函式呼叫得到的,每次呼叫func函式時,該函式都會呼叫getvalue來獲取b的值。

class

test

int func(int a, int b =getvalue())

} ;

下面兩種情況都可以

void func(int i, float f = 2.0f, double d = 3.0

) ;void func(int i, float f, double d = 3.0) ;

但是這樣就不可以

void func(int i, float f = 2.0f, double d) ;

預設引數的連續效能保證編譯器正確的匹配引數。所以可以下這樣乙個結論,如果乙個函式含有預設引數,那麼它的最後乙個引數一定是預設引數。

通常我們都將預設引數放在函式宣告中,因為如果放在函式定義中,那麼將只能在函式定義所在地檔案中呼叫該函式。(為什麼呢?)

.h檔案

class

testclass

;

.cpp檔案

#include "

testclass.h

"void testclass::func(int i = 1, float f = 2.0f, double d = 3.0

)

像上面這樣,只能夠在testclass.cpp中呼叫func函式。豈不是很痛苦?

比如下面兩個過載函式func,乙個只接受乙個引數,而另乙個接受兩個引數,包括乙個預設引數。

class

test

int func(int a, int b = 1

)

} ;

如果像下面這樣呼叫函式

int main(void

)

則編譯器就不知道選擇哪個函式,這就造成了混淆。

C 中函式的預設引數

在c 中增加了函式的預設引數這一功能。在c 中,可以為函式宣告的時候為函式提供乙個預設值,當呼叫該函式的時候,如果沒有函式引數的值,則會使用預設值。例如下面的 include int func int x 0 函式的宣告 int main int argc,char ar int func int ...

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

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

c 中函式的預設引數 5

一.預設引數定義與用法 其實也是為了方便,預設引數 在宣告某個函式時將它的引數也初始化,那麼這些引數就是該函式的預設引數,又叫預設引數,看 include using namespace std void fn int a 4 int main void fn int a 總結一下 怎麼說呢,c 中...