3.1函数的默认参数
在c++函数的形参列表中的形参是可以有默认值的。
#include "iostream"
using namespace std;
//如果自己传入数据,用自己数据,如果没有,用默认值
//注意事项
//1。如果某个位置已经有了默认参数,那么从这个位置往后,都必须有默认参数
//int func1(int a=10,int b,int c)
//{
// return a+b+c;
//}
//2。如果函数的声明有默认参数,函数的实现就不能有默认参数
//声明和实现只能有一个有默认参数
int func2(int a=10,int b=10);
int func(int a,int b=20,int c=30)
{
return a+b+c;
}
int main (){
cout<<func(10,30)<<endl;
}
int func2(int a,int b)
{
return a+b;
}
3.2函数占位参数
c++中函数的形参列表中可以有占位参数,用来做占位,调用函数时必须填补该位置。
返回值类型 函数名(数据类型)
#include "iostream"
using namespace std;
//占位参数
//目前阶段用不到,后边课程用到。
//占位参数可以有默认参数 int =10
void func(int a,int )
{
cout<<"this is func"<<endl;
}
int main (){
func(10,20);
}
3.3函数重载
3.3.1函数重载概述
**作用:**函数名可以相同,提高复用性。
函数重载满足条件:
- 同一个作用域下
- 函数名称相同
- 函数参数类型不同 或者 个数不同 或者 顺序不同。
注意: 函数的返回值不可以作为函数重载的条件
#include "iostream"
using namespace std;
//同一个作用域下
//函数名称相同
//函数参数类型不同 或者 个数不同 或者 顺序不同。
void func()
{
cout << "func()" << endl;
}
void func(int a)
{
cout << "func(int a)" << 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(10,3.14);
func(3.14,10);
}
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,int b=10)" << endl;
}
void func2(int a)
{
cout << "func2(int a=10)" << endl;
}
int main ()
{
// int a=10;
// func(a);
// func(10);//const int &a=10 ->> int tmp=10; const int &a=tmp;
//func2(10);//报错
}