函数提高
作者:互联网
函数默认参数
在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