Day13 預設函式引數,佔位引數,函式過載

2022-09-09 15:33:16 字數 1799 閱讀 3221

day13.2021.11.23

一旦開始有預設值,後面必須都要有預設值

#include"

methodstate.h

"int func(int a, int b = 20, int c=30)

/*一旦開始有預設值,後面必須都要有預設值

int func(int a, int b = 20, int c) c 必須賦值 */

intmain()

函式宣告有預設引數,函式實現就不能有預設引數。宣告和實現只能有乙個地方有預設引數

#include"

methodstate.h"/*

函式宣告有預設引數,函式實現就不能有預設引數

*/int func1(int a, int b = 20, int c = 30);

intmain()

int func1(int a, int b = 20, int c = 30)

#include"

methodstate.h"//

佔位引數

int func(int a, int b , int c,int )

int func1(int a, int b, int c, int =20)

intmain()

int sum(double a, int

b)

int sum(int a, double

b)

double sum(double a, double

b)

int sum(int a, int b, int

c)

double sum(double a, int b, int

c)

double sum(int a, double b, int

c)

double sum(int a, int b, double

c)

double sum(double a, double b, int

c)

double sum(double a, int b, double

c)

double sum(int a, double b, double

c)

double sum(double a, double b, double

c)

intmain()

注意事項:

引用作為過載的條件

void func(const

int &a)

void func(int&a) ​

intmain()

但我搞不懂這一塊

void func(const

int &a)

void func(int

a)

intmain()

個人理解:引數是const int &a與int& a相比,拿乙個變數會進int& a,只是相比來說會進int& a

但如果把這兩個單拿出來也是能進變數,所以把引數是const int &a和int a放一起過載會報錯,引數是int &a和int a放一起過載也會報錯

函式過載碰到預設引數

void func(int a,int b=10)  

void func(int

a)

intmain()

能夠編譯,但無法執行,因為只傳乙個引數兩個過載都可以走,應避免出現

p98結束

預設引數和佔位引數

預設引數 c 中可以在函式宣告時為引數提供乙個預設值,當函式呼叫時沒有指定這個引數的值,編譯器會自動用預設引數代替 void myprint intx 5 void main 函式預設引數規則 只有引數列表後面部分的引數才可以提供預設引數值 一旦在乙個函式呼叫中開始使用預設引數值,那麼這個引數值後的...

預設引數與佔位引數

c 中可以在函式宣告時為引數提供乙個預設值,當函式呼叫時沒有指定這個引數的值,編譯器會自動用預設值代替 從第乙個預設引數開始,右邊的所有引數均需要使用預設引數列表 錯誤的做法 int a int a,int b 1,int c 正確的做法 int b int a,int b 1,int c 2 例項...

C 函式的預設引數和佔位引數

預設引數 引數的預設值,定義乙個函式,可以為引數列表中每乙個引數指定預設值。當呼叫函式時,如果實際引數的值留空,則使用這個預設值,需要注意的是不可以跳過預設引數,因為是位置引數。預設引數後的所有引數都必須設定預設值。函式宣告和函式定義分開寫時 不能同時設定預設引數 分檔案時,定義處的預設引數無效,僅...