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