//所有形參有預設值
int fun(int a=1,int b=2,int c=3)
//部分形參有預設值
int fun(int a,int b=2,int c=3)
可以所有函式形參都賦予預設值,也可以只部分賦予,但是,一旦某個形參被賦予了預設值,它後面的所有形參都必須有預設值。
一般來說,函式只宣告一次,但實際上函式多次宣告是合法的,要注意的是,在某個作用域中乙個形參只能被賦予一次預設實參。函式的後續宣告只能為之前沒有預設值的形參新增預設實參,而且如上面所述,該形參右側所有形參都要有預設值。
int fun(int a,int b,int c=1);
int fun(int a,int b,int c=1);//錯誤,重複宣告
int fun(int a,int b,int c=2);//錯誤,重複宣告
int fun(int a,int b=2,int c);//正確,新增預設實參
//實際上是宣告了乙個函式:
int fun(int a,int b=2,int c=1);
1. 表示式或函式可以作為預設實參。
int tmp1=1;
int tmp2=2;
int getval()
void fun(int a=getval(),int b=tmp1,int c=tmp2);
2. 區域性變數不能作為預設實參。
//接上面的**
void fun1()
函式fun1內部改變了tmp1的值,所以fun的呼叫會傳遞這個更新的值。
宣告的區域性變數隱藏了外層的tmp2,但是這個區域性變數跟傳遞給fun的預設實參沒有關係。
c 預設實參
最近在看關於函式的一部分,其中有這兩句話很吸引我,一是 既可以在函式宣告中也可以在函式定義中指定預設實參,但是在乙個檔案中,只能為乙個形參指定預設實參一次 二是 如果在函式定義的形參表中提供預設實參,那麼只有在包含該函式定義的原始檔中呼叫該函式時,預設實參才是有效的。細細一想才明白這句話的含義,於是...
C 預設實參
預設實參就是函式裡引數的預設值,但是c 使用預設實參也不是隨意的,需要遵守一定的順序規則。void set string name niulei int age 24,string man 通過這就是預設實參 void set string name niulei int age,string ma...
c 預設實參 zz
預設實參是一種雖然並不普遍 但在多數情況下仍然適用的實參值。呼叫函式時,可以省略有預設值的實參。編譯器會為我們省略的實參提供預設值。預設實參是通過給形參表中的形參提供明確的初始值來指定的。程式設計師可為乙個或多個形參定義預設值。但是,如果有乙個形參具有預設實參,那麼,它後面所有的形參都必須有預設實參...