编程语言
首页 > 编程语言> > C++黑马程序员——P95-98. 函数高级

C++黑马程序员——P95-98. 函数高级

作者:互联网

  在C++中,函数的形参列表中的形参是可以有默认值的。

  语法:返回值类型  函数名  (参数 = 默认值)  { ... }

  如果我们传入了自己的数据,就用自己的数据;如果没有,那么就会用默认值

  注意事项

  1. 如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值

1 int func1(int a, int b = 10, int c = 20)
2 {
3     return a + b + c;
4 }
5 
6 //int func2(int a = 10, int b = 20, int c)    //错误,因为c前面的参数有了默认值,那么c也要有默认值
7 //{
8 //    return a + b + c;
9 //}

 

  2. 如果函数声明有默认参数,那么函数实现就不能有默认参数

1 int func1(int a = 10, int b = 10);
2 //int func1(int a = 10, int b = 10)        //错误;函数声明已经定义了默认参数,实现不能重定义默认参数
3 //{
4 //    return a + b;
5 //}

 

  一个测试案例

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int func(int a, int b = 10, int c = 10)
 5 {
 6     return a + b + c;
 7 }
 8 
 9 int main()
10 {
11     cout << func(20, 20) << endl;    //a=20,b=20,c=10
12 
13     system("pause");
14     return 0;
15 }

 

  运行结果:50

  C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置

  语法:返回值类型  函数名  (数据类型)  { ... }

  占位参数也可以有默认参数

 

 1 //占位参数
 2 void func1(int a, int)
 3 {
 4     cout << "HELLO" << endl;
 5 }
 6 
 7 //占位参数(第二个)的默认参数为10(当然也可以不设默认参数)
 8 void func2(int a, int =10)    
 9 {
10     cout << "hello" << endl;
11 }
12 
13 int main()
14 {
15     //func1(10);    //错误,占位参数必须填补
16     func1(10, 10);
17     func2(10);
18 
19     system("pause");
20     return 0;
21 }

 

  作用:函数名可以相同,提高复用性

  函数重载满足条件:

  1. 同一个作用域下  //比如都在全局作用域

  2. 函数名称相同

  3. 函数参数类型不同 或者 个数不同 或者 顺序不同

  注意:函数的返回值不可以作为函数重载的条件

 1 void func(int& a)
 2 {
 3     cout << "func(int& a)的调用" << endl;
 4 }
 5 
 6 void func(const int& a)
 7 {
 8     cout << "func(const int& a)的调用" << endl;
 9 }
10 int main()
11 {
12     int a = 10;
13     func(a);    //调用func(int& a)  调用无const
14     func(10);    //调用 func(const int& a)  调用有const
15 
16     system("pause");
17     return 0;
18 }

 

 1 //函数重载碰到默认参数
 2 void func(int a, int b = 10)
 3 {
 4     cout << "func(int a, int b = 10)的调用" << endl;
 5 }
 6 
 7 void func(int a)
 8 {
 9     cout << "func(int a)的调用" << endl;
10 }
11 
12 int main()
13 {
14     //func(10);        //错误,函数重载碰到默认参数,出现二义性,报错,尽量避免这种情况
15     func(10, 20);
16 
17     system("pause");
18     return 0;
19 }

 

标签:10,函数,int,P95,C++,98,参数,默认,重载
来源: https://www.cnblogs.com/wjjgame/p/16389106.html