其他分享
首页 > 其他分享> > 函数提高

函数提高

作者:互联网

函数默认参数

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

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

 1 #include <iostream>
 2 using namespace std;
 3 void n(int a, int b, int c);//函数的声明与函数体之间只允许有一个设置默认值,即使默认值一样也不行
 4 void n(int a, int b = 10, int c = 30)//如果某个位置有默认值那么自此往后,从左至右所有位置都必须设置默认值
 5 {
 6     cout <<  a + b + c << endl;
 7 }
 8 /*
 9 以下是错误演示
10 void n(int a, int b = 10, int c = 30)
11 {
12     cout <<  a + b + c << endl;
13 }
14  void n(int a, int b, int c) 如果上面的函数设置了默认值,那么就只能有一个相同的函数
15 {
16     cout << a + b + c << endl;
17 }
18 */
19 /*
20 以下是错误演示
21 void n(int a, int b = 10, int c = 30)
22 {
23     cout << a + b + c << endl;
24 }
25 void n(int a, int b = 10, int c = 30)//如果某个位置有默认值那么自此往后,从左至右所有位置都必须设置默认值
26 {
27     cout << a + b + c << endl;
28 }
29 当函数体设置了默认值时相同的函数不能设置默认值,即使默认值一样也不行
30 */
31 int main()
32 {
33     cout << " a = 20 ,b为默认参数 , c为默认参数时 \ta + b + c =";
34     n(20);
35     cout << " a = 30 ,b =20 , c = 60时 \ta + b + c =";
36     n(30,20,60);
37     return 0;
38 }

 

 

函数占位参数

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

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

在现阶段函数的占位参数存在意义不大,但是后面的课程中会用到该技术

 1 #include <iostream>
 2 using namespace std;
 3 void fuc(int a, int)
 4 {
 5     cout << "this is fuc " << endl;
 6 }
 7 int fuc1(int a,int = 10)
 8 {
 9     cout << "this is fuc1" << endl;
10     return a; 
11 }
12 int main()
13 {
14     fuc(10,10);
15     fuc1(45);//结果放在栈上面,运行一边后会自动释放数值
16     //cout fuc1 是不对的原因如上,值已经被自动释放了,会输出乱码
17     cout << fuc1(45) ;
18     return 0;
19 }

 

 

 

 

函数重载

3.3.1 函数重载概述

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

函数重载满足条件:

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

 

 

//函数返回值不可以作为函数重载条件
//int func(double a, int b)
//{
//	cout << "func (double a ,int b)的调用!" << endl;
//}
 
 1 #include <iostream>
 2 using namespace std;
 3 void chongzai()
 4 {
 5     cout << "chongzai 函数的调用" << endl;
 6 }
 7 void chongzai(int a)
 8 {
 9     cout << "chongzai(int a) 函数的调用" << endl;
10 }
11 void chongzai(double a)
12 {
13     cout << "chongzai(double a) 函数的调用" << endl;
14 }
15 void chongzai(int a,double b)
16 {
17     cout << "chongzai(int a,double b) 函数的调用" << endl;
18 }
19 void chongzai(double a,int b)
20 {
21     cout << "chongzai(double a,int b) 函数的调用" << endl;
22 }
23 int main()
24 {
25     chongzai();
26     chongzai(10);
27     chongzai(3.14);
28     chongzai(10,3.14);
29     chongzai(3.14,10);
30     return 0;
31 }

 

 

函数重载注意事项

 1 #include <iostream>
 2 using namespace std;
 3 void chongzai(int& a)
 4 {
 5     cout << "chongzai(int a) 函数的调用" << endl;
 6 }
 7 void chongzai(const int &a)
 8 {
 9     cout << "chongzai(const int& a) 函数的调用" << endl;
10 }
11 void chongzai2(int a, int b = 10)
12 {
13     cout << "chongzai2(int a, int b = 10) 调用" << endl;
14 }
15 
16 void chongzai2(int a)
17 {
18     cout << "chongzai2(int a) 调用" << endl;
19 }
20 int main()
21 {
22     int a = 20;
23     chongzai(a);
24     chongzai(10);
25     chongzai2(10, 20);
26     //chongzai2(10)不能是因为 chongzai2(int a, int b = 10) & chongzai2(int a)都可以调用,系统不知道调用哪个会出现歧义
27     return 0;
28 }

 

标签:函数,int,提高,重载,默认值,void,cout
来源: https://www.cnblogs.com/zaiyewujiang/p/16566829.html