标签:作用域 main ble class space sys http 结果 条件
1.函数默认参数
在C++中,函数的形参列表中的形参是可以有默认值的。
语法:返回值类型 函数名 (参数= 默认值){}
示例代码:
1 #include<iostream> 2 using namespace std; 3 int func(int a, int b = 10, int c = 10) 4 { 5 return a + b + c; 6 } 7 8 //1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值 9 //2. 如果函数声明有默认值,函数实现的时候就不能有默认参数 10 int func2(int a = 10, int b = 10); 11 int func2(int a, int b) 12 { 13 return a + b; 14 } 15 16 int main() 17 { 18 19 cout << "ret = " << func(20, 20) << endl; 20 cout << "ret = " << func(100) << endl; 21 22 system("pause"); 23 24 return 0; 25 }
运行结果:
2.函数占位参数
C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置
语法:返回值类型 函数名 (数据类型){}
示例代码:
1 #include<iostream> 2 using namespace std; 3 //函数占位参数 ,占位参数也可以有默认参数 4 void func(int a, int) 5 { 6 cout << "this is func" << endl; 7 } 8 9 int main() 10 { 11 12 func(10, 10); //占位参数必须填补 13 14 system("pause"); 15 16 return 0; 17 }
运行结果:
3.函数重载
作用:函数名可以相同,提高复用性
函数重载满足条件:
(1)同一个作用域下
(2)函数名称相同
(3)函数参数类型不同或者个数不同或者顺序不同
注意:函数的返回值不可以作为函数重载的条件
示例代码:
1 #include<iostream> 2 using namespace std; 3 //函数重载需要函数都在同一个作用域下 4 void func() 5 { 6 cout << "func 的调用!" << endl; 7 } 8 void func(int a) 9 { 10 cout << "func (int a) 的调用!" << endl; 11 } 12 void func(double a) 13 { 14 cout << "func (double a)的调用!" << endl; 15 } 16 void func(int a, double b) 17 { 18 cout << "func (int a ,double b) 的调用!" << endl; 19 } 20 void func(double a, int b) 21 { 22 cout << "func (double a ,int b)的调用!" << endl; 23 } 24 25 //函数返回值不可以作为函数重载条件 26 //int func(double a, int b) 27 //{ 28 // cout << "func (double a ,int b)的调用!" << endl; 29 //} 30 31 32 int main() 33 { 34 35 func(); 36 func(10); 37 func(3.14); 38 func(10, 3.14); 39 func(3.14, 10); 40 41 system("pause"); 42 43 return 0; 44 }
运行结果:
注意事项:
(1)引用作为重载条件
(2)函数重载碰到函数默认参数
示例代码:
1 #include<iostream> 2 using namespace std; 3 //函数重载注意事项 4 //1、引用作为重载条件 5 6 void func(int& a) 7 { 8 cout << "func (int &a) 调用 " << endl; 9 } 10 11 void func(const int& a) 12 { 13 cout << "func (const int &a) 调用 " << endl; 14 } 15 16 17 //2、函数重载碰到函数默认参数 18 19 void func2(int a, int b = 10) 20 { 21 cout << "func2(int a, int b = 10) 调用" << endl; 22 } 23 24 void func2(int a) 25 { 26 cout << "func2(int a) 调用" << endl; 27 } 28 29 int main() 30 { 31 32 int a = 10; 33 func(a); //调用无const 34 func(10);//调用有const 35 36 37 //func2(10); //碰到默认参数产生歧义,需要避免 38 39 system("pause"); 40 41 return 0; 42 }
运行结果:
标签:作用域 main ble class space sys http 结果 条件
原文地址:https://www.cnblogs.com/guanrongda-KaguraSakura/p/13382919.html