3. 函数的提高
目录
3. 函数的提高
3.1 函数的默认参数
3.2 函数占位参数
3.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;}---------------------------------------------------------------6070请按任意键继续. . .
注意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;}-------------------------------------------------------------------11030func(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 C++开发环境搭建推荐视频:/video/BV1et411b73Z?from=search&seid=4205594350351753444已投币三连,非常细致的视频教程,感谢up主。相关教程