3. 函数的提高
目录
3.1 函数的默认参数
C++中,函数的形参列表中的形参是可以有默认值的。
语法:
返回值类型 函数名 (参数 = 默认值) {}
// 如果没有传入参数,就使用默认值。
// 如果有传入的参数,就使用传入的参数。
// 语法: 返回值类型 函数名(形参 = 默认值)
int func(int a, int b = 20, int c = 30)
{
return a + b + c;
}
int main() {
func(10, 20);
cout << func(10) << endl;
cout << func(10, 30) << endl;
system("pause");
return 0;
}
---------------------------------------------------------------
60
70
请按任意键继续. . .
注意1:如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值。
注意2:如果函数声明有默认参数,函数的实现就不能有默认参数。
声明和实现中,只能有一个有默认参数。
3.2 函数占位参数
作用:C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置。
语法:
返回值类型 函数名 (数据类型) {}
现阶段函数的占位参数存在意义不大,但是后面的课程中会有用到该技术。
占位参数,还可以有默认参数。
3.3 函数重载 (重要)
作用:函数名可以相同,提高复用性。(根据函数的参数的不同,在不同情况下调用不同的函数)
函数重载满足条件:
- 1. 同一个作用域下。
- 2. 函数名相同。
- 3. 函数参数类型不同 或者 个数不同 或者 顺序不同。
注意:函数的返回值不可以作为函数重载的条件。
// 函数重载
// 可以让函数名相同,提高复用性
void func(void)
{
cout << 1 << endl;
}
void func(int a)
{
cout << a << endl;
}
void func(int a, int b)
{
cout << a + b << endl;
}
void func(double a, int b)
{
cout << "func(double a, int b)" << endl;
}
void func(int a, double b)
{
cout << "func(int a, double b)" << endl;
}
// 函数的返回值不可以作为函数重载的条件
//int func(int a, double b)
//{
// cout << "func(int a, double b)" << endl;
//}
int main() {
func();
func(10);
func(10, 20);
func(3.14, 20);
func(20, 3.14);
system("pause");
return 0;
}
-------------------------------------------------------------------
1
10
30
func(double a, int b)
func(int a, double b)
请按任意键继续. . .
注意事项:
注意1:引用作为重载条件。
// 函数重载的注意事项
// 1.引用作为重载的条件
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);
func(10);
system("pause");
return 0;
}
---------------------------------------------------------
func(int& a)
func(const int& a)
请按任意键继续. . .
注意2:函数重载碰到函数默认参数。
// 函数重载的注意事项
// 1.引用作为重载的条件
// 2.函数重载碰到默认参数
void func(int a)
{
cout << "func(int a)" << endl;
}
void func(int a, int b = 20)
{
cout << "func(int a, int b = 20)" << endl;
}
int main() {
int a = 10;
func(a); // 碰到默认参数产生歧义,需要避免。这句编译器会报错
//func(10);
system("pause");
return 0;
}
相关教程
- 开发环境搭建:Visual Studio 2019 C++开发环境搭建
- 推荐视频:https://www.bilibili.com/video/BV1et411b73Z?from=search&seid=4205594350351753444
- 已投币三连,非常细致的视频教程,感谢up主。