C 也允許函式預設引數

2021-09-06 05:59:37 字數 729 閱讀 4137

作為乙個從c++過來的開發者,對於c#不能使用預設引數感到很不爽,因為這樣的話明明寫乙個函式就可以實現的功能非得分成多個過載(overload)函式去寫。但今天看到乙個**,突然發現c#原來也可以用預設引數,用法跟c++非常類似。

static

void testfun(int a = 10

)

static

void main(string

args)

太奇怪了,我明明記得不行的啊,要行的話我不早就這麼用了?一開始我還以為是.net 4.0的新功能,但用vs2010編了乙個.net framework 2.0的程式測試,居然也沒問題。於是讓同事用vs2005試試看,發覺編譯不過,原來不是.net的問題,而是編譯器的問題,因為究竟呼叫什麼函式,傳什麼引數,這其實都是在編譯期決定的,考慮到自己最開始用c#的時候是用vs2008,到了vs2010之後就支援了(也可能是c#的新特性,ok,總之現在是可以的了)。

而且我發覺這個預設引數功能比c++的還強,例如:

static

void testfun(int a, int b = 10, int c=20

)

static

void main(string

args)

這樣的話相當於制訂了c的值,而b的值使用預設,而在c++中,要指定c的值,恐怕也一定得指定b的值。

函式預設引數(C )

大家都知道在c 中,我們可以為方法的引數指定乙個預設值,像這樣 void foo int i 100 當我們以這種形式呼叫方法的時候 foo 實際上引數i被賦於了預設值,所以相當於呼叫了foo 100 然而在c 中是不支援引數的預設值的,那麼如果我們要用到類似的功能應該怎麼實現呢?考慮下面這個例子 ...

C 函式預設引數

使用預設引數時的注意事項 有函式宣告 原型 時,預設引數可以放在函式宣告或者定義中,但只能放在二者之一 double sqrt double f 1.0 函式宣告 double sqrt double f 函式定義 沒有函式 原型 時,預設引數在函式定義時指定.沒有 函式宣告 double sqrt...

C 函式預設引數

c 中允許為函式提供預設引數,又名預設引數。使用預設引數時的注意事項 有函式宣告 原型 時,預設引數可以放在函式宣告或者定義中,但只能放在二者之一 double sqrt double f 1.0 函式宣告 double sqrt double f 函式定義 沒有函式 原型 時,預設引數在函式定義時...