c++学习第四讲---函数提高
1.函数默认参数:
在( )中将参数赋值,如果传值了,则用传入值,否则才用函数中默认参数。
例:
int func(int a, int b = 3, int c = 3)
{
return a + b + c;
}
int main()
{
cout << func(1, 2) << endl;//6
return 0;
}
注:1.如果一个位置有了默认参数,那么之后的所有位置都要有默认参数。
int func(int a = 1, int b, int c = 3)//错误,a有默认参数后,其后参数都应该有默认参数
{
return a + b + c;
}
2.声明和实现只能有一个有默认参数。
int func(int a = 1, int b = 2);
int func(int a = 1, int b = 2)//错误,重定义,声明和实现只能有一个有默认参数
{
return a + b;
}
2.函数占位参数:
在函数( )中只有数据类型,没有变量名的变量称作函数占位参数。
且占位参数必须有值传入。
void func(int a, int)//int 即为占位参数
{
cout << a << endl;
}
int main()
{
func(10, 10);//有两个值,后面的传给占位参数
return 0;
}
注:1.暂时用不到。
2.占位参数也可以有默认参数。 (int =10)
3.函数重载
3.1.概念:
函数名称相同,提高复用性。
即根据传入的数据不同调用同名的不同函数。
3.2.满足条件:
(1)在同一个作用域下;
(2)函数名相同;
(3)函数参数类型不同,或者个数不同,或者顺序不同。
注:1.返回值不同不作为函数重载的条件;
2.参数有无 const 算作不同类型。
例:
void func()
{
cout << "func的调用1" << endl;
}
void func(int a)
{
cout << "func的调用2" << endl;
}
3.3.注意事项:
1.引用作为重载条件:(有无 const )
void func(int& a)
{
cout << "func(int& a)调用" << endl;
}
void func(const int& a)
{
cout << "func(const int& a)调用" << endl;
}
int main()
{
int a = 10;
func(a);//调用(int& a)
func(10);//调用(const int& a)
return 0;
}
2.函数重载+默认参数:
void func(int a)
{
cout << "func(int a)的调用" << endl;
}
void func(int a, int b = 10)
{
cout << "func(int a)的调用" << endl;
}
int main()
{
func(10);//错误,函数重载两种都可调用
return 0;
}
结论:在函数重载中尽量不出现默认参数。