C 預設引數

2021-10-03 11:39:07 字數 1597 閱讀 6476

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

void

func

(int i =1,

float f =

2.0f

,double d =

3.0)

intmain

(void

)

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

class

test

intfunc

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

;

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

預設引數可以放在函式宣告或者定義中,但只能放在二者之一

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

.**件

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

intfunc

(int a,

int b =1)

};

如果像下面這樣呼叫函式

int

main

(void

)

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

C 預設引數

一 預設引數 在c 中,可以為引數指定預設值。在函式呼叫時沒有指定與形參相對應的實參時,就自動使用預設引數。預設引數的語法與使用 1 在函式宣告或定義時,直接對引數賦值。這就是預設引數 2 在函式呼叫時,省略部分或全部引數。這時可以用預設引數來代替。注意 1 預設引數只可在函式宣告中設定一次。只有在...

C 預設引數

函式的預設引數值,即在定義引數的時候同時給它乙個初始值。在呼叫函式的時候,我們可以省略含有預設值的引數。也就是說,如果使用者指定了引數值,則使用使用者指定的值,否則使用預設引數的值。void func int i 1,float f 2.0f,double d 3.0 int main void 引...

C 預設引數

概念 在函式宣告或定義的時候給形參乙個預設的引數。這樣在呼叫該函式,如果沒有給實參,函式的這個形參就預設為這個值。使用規則 1 預設值必須從右往左給值 2 預設值必須為常量或全域性變數 const static 普通的 全域性變數 也可以作為預設引數 3 預設引數只能出現在宣告或者定義的一處 4 不...