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