前言
本文记录本渣渣依据黑马程序员C++课程视频学习C++笔记
本节记录C++中的函数高级部分
3 函数提高
3.1 函数默认参数
C++中函数当形参列表中当形参时可以有默认值
语法:返回值类型 函数名( 参数 = 默认值){函数主体}
-
形参第一个有默认值参数后的参数,都必须有默认值
-
如果函数声明有默认参数,函数实现不能有默认值,以免重定义,反之亦然
错误提示 :
正确写法:
运行结果:
- 函数默认参数可被实参覆盖
图示:
3.2 函数占位参数
C++中函数当形参列表里可以有占位参数,用来作占位,调用函数时,必须填补该位置
- 语法: 返回值类型 函数名 (数据类型){函数主体}
简单代码示例:
#include <iostream>
using namespace std;
void Func(int) {
cout << "函数占位参数" << endl;
}
int main() {
Func(10);
system("pause");
return 0;
}
- 占位参数也可以有默认参数
简单代码示例:
#include <iostream>
using namespace std;
void Func(int = 100) {
cout << "函数占位参数" << endl;
}
int main() {
Func(99);
system("pause");
return 0;
}
3.3 函数重载
3.3.1函数重载概述
函数重载即函数同名
- 作用:函数名可以相同,提高复用性
函数重载条件:
- 同一作用域下
- 函数名相同
- 函数参数类型不同 或 个数不同 或 定义顺序不同
- 函数返回值和函数参数名不可作为函数重载的条件
简单代码示例:
#include <iostream>
using namespace std;
void Function_Overloading(int value) {
cout << "Function_Overloading函数" << endl;
}
void Function_Overloading(double value) { //函数参数类型不同
cout << "第一个Function_Overloading函数重载" <<endl;
}
void Function_Overloading(int valueA, int valueB) { //函数参数个数不同
cout << "第二个Function_Overloading函数重载" << endl;
}
void Function_Overloading(int valueA, double valueB) { //函数参数定义顺序不同
cout << "第三个Function_Overloading函数重载" << endl;
}
void Function_Overloading(double valueA, int valueB) { //函数参数定义顺序不同
cout << "第四个Function_Overloading函数重载" << endl;
}
int main() {
Function_Overloading(1);
Function_Overloading(2.1);
Function_Overloading(3, 4);
Function_Overloading(3, 4.0);
Function_Overloading(3.0, 4);
system("pause");
return 0;
}
运行结果:
3.2.2 函数重载注意事项
- 引用和常引用作为重载条件时,为参数类型不同
即当有如下代码:
#include <iostream>
using namespace std;
void Function_Overloading(int& Reference_variableA) {//引用作函数重载条件
cout << "引用作函数重载条件:" << Reference_variableA << endl;
}
void Function_Overloading(const int& Reference_variableA) {//常引用作函数重载条件
cout << "常引用作函数重载条件:" << Reference_variableA << endl;
}
int main() {
int Value = 100;
Function_Overloading(Value); //传入正常变量
Function_Overloading(10); //传入常量
system("pause");
return 0;
}
运行结果:
- 函数重载与函数默认参数
图示:
这样写将造成函数调用不明确,虽然可以通过添加第二个实参来使语法正确,但这也会产生歧义,我们应避免这样当写法