3 函式提高
3.1 函式默認引數
在C++中,函式的形式串列中的形參是可以有默認值的,
語法:回傳值型別 函式名(引數 = 默認值) { }
示例:
#include<iostream>
using namespace std;
//函式默認引數
//如果我們自己傳入了資料,就用自己的資料,如果沒有,那么就用默認值
//語法: 回傳值型別 函式名(形參 = 默認值){}
int func(int a, int b = 20, int c =30)
{
return a + b + c;
}
int main()
{
cout << func(10, 30) << endl;
system("pause");
return 0;
}
注意事項:
- 如果某個位置已經有了默認引數,那么從這個位置往后,從左到右必須有默認值
- 如果函式宣告有默認引數,函式實作就不能有默認引數,宣告和實作只能有一個默認引數
3.2 函式占位引數
C++中函式的形參串列中可以有占位引數,呼叫函式時必須填補該位置
語法:回傳值型別 函式名(函式型別){}
示例:
#include <iostream>
using namespace std;
//占位引數
//回傳值型別 函式名(資料型別){}
void func(int a, int)
{
cout << "This is a func" << endl;
}
int main()
{
func(10, 10);
system("pause");
return 0;
}
3.3 函式多載
3.3.1 函式多載概述
作用:函式名可以相同,提高復用性
函式多載滿足條件:
- 同一個作用域下
- 函式名稱相同
- 函式引數型別不同或者個數不同或者順序不同
注意:函式的回傳值不可以作為函式多載的條件
示例:
#include <iostream>
using namespace std;
//函式多載
//可以讓函式名相同,提高復用性
//函式多載的滿足條件
//1、在同一個作用域下
//2、函式名稱相同
//3、函式的引數型別不同,或者個數不同,或則和順序不同
void func(double a)
{
cout << "func(double a)的呼叫" << endl;
}
void func(int a)
{
cout << "func(int a) 的呼叫!" << endl;
}
int main()
{
func(1.1);
system("pause");
return 0;
}
3.3.2 函式多載的注意事項
- 參考作為函式多載條件
- 函式多載碰到函式默認引數
示例:
#include <iostream>
using namespace std;
//函式多載的注意事項
//1、參考作為多載的條件
void func(int& a)
{
cout << "func(int& a)呼叫" << endl;
}
void func(const int& a)
{
cout << "func(const int& a)呼叫" << endl;
}
//2、函式多載碰到默認引數
void func2(int a, int b = 10)
{
cout << "func2(int a)呼叫" << endl;
}
void func2(int a, int b)
{
cout << "func2(int a)呼叫" << endl;
}
int main()
{
int a = 10;
func(a);//呼叫第一個版本
func(10);//呼叫第二個版本
//func2(10);//報錯,當函式多載碰到默認引數時候出現二義性,導致無法呼叫
system("pause");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/498526.html
標籤:C++
