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;}