C++学习--点滴记录011 素颜马尾好姑娘i 2024-05-07 17:01 17阅读 0赞 ### 11函数提高 ### #### 11.1 函数默认参数 #### 在C++中,函数的形参列表中的形参可以有默认值 **语法:** `返回值类型 函数名 (参数= 默认值){}` **示例:** #include <iostream> using namespace std; int func(int a, int b = 10, int c = 10) { return a + b + c; } //1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值 //2. 如果函数声明有默认值,函数实现的时候就不能有默认参数 int func2(int a = 10, int b = 10); int func2(int a, int b) { return a + b; } int main() { cout << "ret = " << func(20, 20) << endl; cout << "ret = " << func(100) << endl; system("pause"); return 0; } ![在这里插入图片描述][c0d8fcf1979c440198f9427bc9942152.png_pic_center] #### 11.2 函数占位参数 #### C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置 **语法:** `返回值类型 函数名 (数据类型){}` **示例:** #include <iostream> using namespace std; //函数占位参数 ,占位参数也可以有默认参数 void func(int a, int) { cout << "this is func" << endl; } int main() { func(10,10); //占位参数必须填补 system("pause"); return 0; } ![在这里插入图片描述][67c5ec30157a4e0885ca63ed3161e80e.png_pic_center] #### 11.3 函数重载 #### ##### 11.3.1 函数重载概述 ##### **作用:** 函数名可以相同,提高复用性 **函数重载满足条件:** * 同一个作用域下 * 函数名称相同 * 函数参数**类型不同** 或者 **个数不同** 或者 **顺序不同** **注意:** 函数的返回值不可以作为函数重载的条件 **示例:** #include <iostream> using namespace std; //函数重载需要函数都在同一个作用域下 void func() { cout << "func 的调用!" << endl; } void func(int a) { cout << "func (int a) 的调用!" << endl; } void func(double a) { cout << "func (double a)的调用!" << endl; } void func(int a ,double b) { cout << "func (int a ,double b) 的调用!" << endl; } void func(double a ,int b) { cout << "func (double a ,int b)的调用!" << endl; } int main() { func(); func(10); func(3.14); func(10,3.14); func(3.14 , 10); system("pause"); return 0; } ![在这里插入图片描述][2fbab649448d490d93913185221657a2.png_pic_center] ##### 11.3.2 函数重载注意事项 ##### * 引用作为重载条件 * 函数重载碰到函数默认参数 **示例:** #include <iostream> using namespace std; //函数重载注意事项 //1、引用作为重载条件 void func(int &a) { cout << "func (int &a) 调用 " << endl; } void func(const int &a) { cout << "func (const int &a) 调用 " << endl; } //2、函数重载碰到函数默认参数 void func2(int a, int b = 10) { cout << "func2(int a, int b = 10) 调用" << endl; } void func2(int a) { cout << "func2(int a) 调用" << endl; } int main() { int a = 10; func(a); //调用无const func(10);//调用有const //func2(10); //碰到默认参数产生歧义,需要避免 system("pause"); return 0; } ![在这里插入图片描述][14630cb1712a4acd9b502dbde24921a7.png_pic_center] **希望本文对大家有帮助,上文若有不妥之处,欢迎指正** **分享决定高度,学习拉开差距** [c0d8fcf1979c440198f9427bc9942152.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/05/07/a7ab3ad9f06f4593991dd5022af85922.png [67c5ec30157a4e0885ca63ed3161e80e.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/05/07/e4931b3282544c9686011fbaa27b5489.png [2fbab649448d490d93913185221657a2.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/05/07/5c05388c648b4552bccb937ee478a793.png [14630cb1712a4acd9b502dbde24921a7.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/05/07/223e63978714435cad3ca441d9902092.png
还没有评论,来说两句吧...