預設引數是宣告定義函式時為函式的引數指定乙個預設值,在呼叫函式時,如果沒有指定的實參則採用該預設值,否則使用指定實參。
預設引數可以是全預設和半預設(缺少一部分)
舉個例子:
1、全省引數
#includeusing namespace std;
int add(int a = 10, int b = 20,int c = 30)//所有的引數都制定了預設值
全省引數傳參時必須依次從左向右,如果沒有傳參的使用指定的預設值。
2、半省引數
宣告和定義的函式的引數只有一部分的引數被指定。
半省引數必須從右往左給出,不能隔著給。
舉個例子:
int mul(int x=1, int y=0,int z)
這樣就會報錯,必須從有向左給出。
只有當z有了預設值,y才能有,然後,x才能有。
舉個例子:
int mul(int x, int y=2,int z=6)
int main()
3、預設引數不能在函式宣告和定義中同時出現。
4、預設值必須時全域性變數或者常量。
函式過載:是函式的一種情況,c++允許在同一作用域中宣告幾個功能類似的同名函式。但是這些函式的形參列表必須不同(引數個數,順序,型別不同)
舉例如下:
#includeusing namespace std;
int add(int x, int y)
double add(double x, double y)//引數型別不同
int add(int x, int y, int z)//引數數目不同
int main()
以上add都是函式過載。執行結果如下:
函式過載和函式的返回值型別無關。
2、為什麼c++中能夠實現函式過載。
答:因為檔案鏈結時,呼叫函式,會通過宣告的函式名在符號表中找它對應的位址,c語言中編譯器不會對同名函式進行修飾,引數不同,在呼叫時不知道該呼叫哪乙個,所以會報錯,在c語言中不能實現函式過載。
而c++中會對名字進行修飾,根據引數的不同,是它們有不同的名字,依據不同引數,找相應的名字,從而實現函式過載。
c 函式過載和預設引數
函式過載 是c 語言物件導向的特點 多型的一種表現形式 又稱為靜多型 過載的規則 1 函式名相同。2 引數個數不同,引數型別不同,引數順序不同,均可構成過載。3 僅返回值型別不同則不可以構成過載。void func int a ok void func char a ok void func int...
C 函式過載, 預設引數
在我們的自然語言當中,乙個詞在不同的情景之下可能會有多重不同的含義,但是我們可以通過合理地判斷來確定該詞的真正含義,這種情況,我們可以說該詞被 過載 了.關於函式過載的概念 函式過載其實就是函式的一種特殊的情況,在我們的c 中允許在同一作用域當中宣告幾個功能類似的同名函式,但是這個同名函式的形參列表...
C 預設引數 函式過載
預設引數 預設引數是宣告或定義函式時為函式的引數指定乙個預設值。在呼叫該函式時,如果沒有指定實參則採用該預設值,否則使用指定的實參。例void testfunc int a 0 intmain 預設引數分類 1.全預設引數 void testfunc int a 10,int b 20,int c ...