函数默认参数
在c++中,函数的形参列表中的形参是可以有默认值的。
语法:返回值类型 函数名 (参数=默认值){}
特点:
1、如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值;
2、如果函数声明有默认值,函数实现的时候就不能有默认值。
#include<iostream>
using namespace std;
int func(int a, int b=20, int c=30);
int func(int a, int b, int c)
{
return a + b + c;
}
int main()
{
//如果主函数中传值了,则按照主函数中的值
cout << func(10, 40) << endl;//10+40+30=80
system("pause");
return 0;
}
输出:
80
函数占位参数
c++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置。
语法:返回值类型 函数名 (数据类型){}
#include<iostream>
using namespace std;
//函数占位参数,占位参数也可以有默认参数
void func(int a, int = 10)
{
cout << "hello world" << endl;
}
int main()
{
func(10);//占位参数必须填补
system("pause");
return 0;
}
函数重载
作用:函数名可以相同,提高复用性。
函数重载满足条件:
同一个作用域下(如:都在全局作用域下);
函数名称相同;
函数参数类型不同或者个数不同或者顺序不同。
注意:函数的返回值不可以作为函数重载的条件。
#include<iostream>
using namespace std;
void func()
{
cout << "func_1" << endl;
}
void func(int a)
{
cout << "func_2" << endl;
}
//int func(int a)//函数的返回值不可以作为函数重载的条件
//{
// cout << "func_2" << endl;
//}
int main()
{
func();
func(10);
system("pause");
return 0;
}
注意事项:
1、引用作为重载条件;
2、函数重载碰到默认参数。
#include<iostream>
using namespace std;
//1、引用作为重载条件
void func(int& a)//int& a=10;不合法
{
cout << "int" << endl;
}
void func(const int& a)//const int& a=10;合法
{
cout << "const int" << endl;
}
//2、函数重载碰到默认参数
void func2(int a)
{
cout << "无默认参数" << endl;
}
void func2(int a,int b=20)//const int& a=10;合法
{
cout << "有默认参数" << endl;
}
int main()
{
int a=10;
func(a);//调用无const
func(10);//调用有const
//func2(10);//碰到默认参数产生起义,需要避免
system("pause");
return 0;
}