1. 程式人生 > >【C++】函式的預設值 && 函式過載

【C++】函式的預設值 && 函式過載

一、函式的預設值

1>預設值一般寫在宣告中(可以寫多個宣告)

int Func(int a, int b, int c = 20);

Func(10,20);   和   Func(10,20,30); 都可以

 

2>自左向右依次賦值(實參會替代形參)

int Func(int a = 10, int b, int c = 20);

Func(10);//這裡會出錯,會出現二義性,應該 Func(10,20);  或者  Func(10,20,30);

 

3>預設值賦值只能賦值一次

int Func(int a, int b, int c = 10);  int Func(int a, int b, int c = 20); 這是錯誤的

 

4>預設值的限制

a.不能使用區域性變數

b.能使用全域性變數(靜態全域性變數)

c.函式也可以使用

int Func(int a, int b, int c = 10);

int Func(int a, int b = 20, int c);

 

二、函式過載

1>C++函式符號生成的規則(返回值, 函式名, 引數列表)

2>函式過載的三要素

要同作用域過載,否則會有就近原則   &&   同名     &&   引數列表要不同

int Sum(int a, int b);   和  double Sum(int a, int b); 不符合函式過載,因為不滿足以上三要素

其二義性==》函式過載決議(進行實參與形參的匹配)

 

3>注意事項

  函式名相同,引數列表不同,返回值不同 不能構成函式過載

int Func(int a, in b = 10);  和   int Func(int a, int b);   這種不能既作預設值又作函式過載