初始c 中的預設引數和函式過載

2021-10-20 21:43:19 字數 1396 閱讀 3246

預設引數是宣告定義函式時為函式的引數指定乙個預設值,在呼叫函式時,如果沒有指定的實參則採用該預設值,否則使用指定實參。

預設引數可以是全預設和半預設(缺少一部分)

舉個例子:

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 ...