ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

函数提高

2022-08-26 13:00:08  阅读:192  来源: 互联网

标签:函数 int 提高 重载 默认值 void cout


函数默认参数

在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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有