1,函數默認參數
在c++中,函數的形參列表中的形參是可以有默認值得
語法:返回值類型? ?函數名? ?(參數 = 默認值){}
示例:
#include<iostream>
using namespace std;//函數默認參數
// 就是如果傳了就用傳的值,沒有就默認值。
//語法:返回值類型 函數名(形參=默認值){}
int func(int a,int b=20,int c=30)
{return a+b+c;} //注意://如果某個位置已經有了默認參數,從這個位置往后都必須有默認值
// int func2(int a=10,int c,int b)
// {
// return a+b+c;
// } 這個是錯誤的 //如果函數的聲明有了默認參數,函數實現就不能有默認參數
//聲明和實現只能有一個默認參數
//int func2(int a=10,int b=10);
//
//int func2(int a=10,int b=10)
//{
// return a+b;
//}int main()
{cout << func(10,30) << endl;system("pause");return 0;}
2,函數占位參數
c++中函數的形參列表里面可以有占位參數,用來做占位,調用函數時必須填補該位置?
語法:返回值類型 函數名 (數據類型){}
示例:
#include<iostream>
using namespace std;//占位參數
//返回值類型 函數名(數據類型){}
//占位參數還可以有默認參數
void func(int a,int)
{cout<<"this is func"<<endl;
}int main()
{func(10,30); system("pause");return 0;}
3,函數重載
作用:函數名可以相同,提高復用性
函數重載滿足條件:
*同一個作用域下
*函數名稱相同
*函數參數類型不同 或者 個數不同 或者 順序不同
#include<iostream>
using namespace std;//函數重載
//可以讓函數名相同,提高復用性//函數重載的滿足條件//在同一作用域下//函數名稱相同//函數參數類型不同,或者個數不同,或者順序不同
void func()
{cout<<"func()的調用!"<<endl;
}
void func(double a)
{cout<<"func(double a)的調用"<<endl;
}
void func(int a,double b)
{cout<<"func(int a,double b)的調用!"<<endl;
}
void func(double a,int b);
{cout<<"func(double a,int b)的調用"<<endl;
}//函數的返回值不可以作為函數的重載條件
//int func(double a,int b)
//{
// cout<<"func(double a,int b)的調用!"<<endl;
//}int main()
{func(); func(10,3.14);func(3.14,10);system("pause");return 0;}
函數重載的注意事項
*引用作為重載條件
*函數重載碰到函數默認參數
#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)
{cout<<"func2(int a,int b)的調用"<<endl;
}
void func2(int a)
{cout<<"func2(int a)的調用"<<endl;
}
int main()
{int a=10;func(a);// 調用的是上面的 func(10);//調用的額是下面的const的
// func2(10);//碰到默認參數產生歧義,需要避免 system("pause");return 0;}