c++ 函式的預設引數
複製**
複製**
結果:1,2
-1,2
首先看上述的**,print函式是帶有預設引數的。
所以呼叫print(), print(-1)都可以準確的輸出。
這種預設引數的情況會帶來有些便利。(比如初始化乙個商品物件,在99%的情況在都是正常的,那麼這個商品是否正常的標記就可以預設為1,特殊的1%情況,再加上)
但是有以下三個要注意的情況。
預設引數只能放在函式宣告處或者定義處,能放在宣告處就放在宣告處 。
上述**把那行注釋開啟,預設引數在宣告和定義處都有了,那麼就會有編譯錯誤。(兩次預設賦值是不被允許的。)
a. 大部分情況,別人呼叫你的**只能看到函式宣告,如果你寫在定義處,別人根本不知道你的預設引數是什麼。
b.如果你是在定義處寫的預設引數,那麼你在使用該函式前就需要把函式定義放在前面。不然編譯階段通過無缺省引數的函式宣告無法確定這個函式是帶預設引數的。
所以,預設引數寫在宣告處啊。^ ^
2.如果某個引數是預設引數,那麼它後面的引數必須都是預設引數
因為非預設引數的引數必須要給出具體值,而呼叫函式傳遞引數的時候是從左到右的,所以非預設引數前面的都必須要傳值進來。
那麼預設引數後面的當然也得都為預設引數。
3.不要過載乙個帶預設引數的函式
看下這個函式:
複製**
class test
int func(int a, int b = 1)
} ;
複製**
你呼叫func(1)的時候,誰知道你想呼叫哪乙個。
C (帶有預設引數的函式引數)預設函式引數
預設引數?在c 中,允許實參的個數與形參的個數不同。在宣告函式原型時,為乙個或者多個形參指定預設值,以後呼叫這個函式時,若省略某乙個實參,c 則自動的以預設值作為相應引數的值。實列說明 includeusing namespace std int add int x 4,int y 7 int ma...
函式的預設引數
c 中只能定義一次預設值,即原型說明時定義了預設值,後面的函式定義不能有預設值,且預設引數都必須是從右到左定義,呼叫時實參對形參的初始化必須是從左向右的 比如 函式宣告f int i 5 定義了預設值。後面對f的函式定義時就不需要提供預設值了 f int i 即函式定義不能寫成 f int i 5 ...
函式的預設引數
c 在宣告函式原型的時候,可以為乙個或多個引數指定預設引數值,當函式呼叫的時候,如果沒有指定這個值,編譯器會自動用預設值替代。void fun int a 1,int b 2 int main 注意點 1.void fun int a,int b 1,int c 2 若形參b是預設引數,那麼形參c必...