目錄
1 函數默認參數
在C++中,函數的形參列表中的形參是可以有默認值的;如果沒有傳遞參數使用默認值,如果傳遞了參數,使用傳遞的值;
語法:返回值類型 函數名(參數=默認值){}
注意事項
1、如果某個位置已經有了默認參數,那麼從左到右都必須有默認值
2、如果函數的聲明有了默認參數,那麼函數實現就不能有默認參數 聲明和實現只能有一個定義形參默認值
/函數的默認參數
//語法:返回值類型 函數名(參數=默認值)
int func02(int a, int b=20, int c=30)
{
return a + b + c;
}
//注意事項
//1、如果某個位置已經有了默認參數,那麼從左到右都必須有默認值
//2、如果函數的聲明有了默認參數,那麼函數實現就不能有默認參數 聲明和實現只能有一個定義形參默認值
int func03(int a=10, int b=10);
int func03(int a, int b)
{
return a + b;
}
int main()
{
//cout << "ref=" << ref << endl;
cout << func02(10,30,20) << endl;
cout << func03() << endl;
system("pause");
return 0;
}
2 函數佔位參數
C++中函數的形參列表中可以有佔位參數,用來做佔位,調用時必須填補該位置,
語法: 返回值類型 函數名(數據類型);
//返回值類型 函數名(數據類型)
//目前階段中的佔位參數 我們還用不到,後面會介紹
//佔位參數 還可以有默認參數
void func04(int a,int = 10)
{
cout << "this is func04 " << endl;
}
int main()
{
//cout << "ref=" << ref << endl;
func04(10);
system("pause");
return 0;
}
3 函數重載
3.1 函數重載概述
作用:函數名可以相同,提高複用性
函數重載滿足條件:
- 同一個作用域下
- 函數名稱相同
- 函數參數類型不同,或者個數不同,或者順序不同
函數返回值不可以作爲函數重載的區分條件
//函數重載
//可以讓函數名相同,提高函數的複用性
//函數重載需要滿足的條件:
//1、同一個作用域下
//2、函數名稱相同
//3、函數參數類型不同,或者個數不同,或者順序不同;
void func05() {
cout << "func diaoyong " << endl;
}
void func05(int a) {
cout << "func diaoyong int a" << endl;
}
void func05(double a) {
cout << "func diaoyong double a" << endl;
}
void func05(double a,int b) {
cout << "func diaoyong double a int b" << endl;
}
void func05(int a, double b) {
cout << "func diaoyong int a double b" << endl;
}
//函數的返回值不可以作爲函數重載的條件
int func05(int a, double b) {
cout << "func diaoyong int a double b" << endl;
}
int main()
{
//cout << "ref=" << ref << endl;
//func04(10);
func05();
func05(10);
func05(3.14);
func05(3.14,10);
func05(10, 3.14);
system("pause");
return 0;
}
3.2函數重載的注意事項
引用作爲重載條件;
函數重載碰到各種函數默認參數;
函數重載時不要使用默認參數
//函數的返回值不可以作爲函數重載的條件
//函數重載的注意事項
//1、引用作爲重載的條件
void func06(int& a)
{
cout << "func06 int &a" << endl;
}
void func06(const int& a)
{
cout << "func06 int const &a" << endl;
}
//2、函數重載碰到默認參數
void func07(int a,int b=10)
{
cout << "func07 int &a" << endl;
}
void func07(int a)
{
cout << "func07 int a" << endl;
}
int main()
{
int a = 10;
func07(a);
system("pause");
return 0;
}