- 缺省函数
- 函数重载
- 内联函数
缺省参数的定义:
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实,参则采用该形参的缺省值,否则使用指定的实参,就是缺省函数,可以传入函数所需参数的部分,未传入部分用设定值来替代,
// 通过缺省的程度来判断全缺省和半缺省
全缺省参数:
#include<iostream>
using std::cout;
using std::endl;
int Add(int x = 10, int y = 20,int z = 20){
return x + y;
}
int main(){
int ret1 = Add(); //不传入参数,使用形参默认值
cout<< ret1 <<endl;
int ret2 = Add(1, 2, 3) //传入参数,使用指定实参
cout<< ret2 <<endl;
return 0;
}
半缺省参数 // 半缺省函数需要赋值
int Add(int x, int y, int z = 20){
return x + y;
}
void test(){
// 传入三个参数可以
Add(1, 2, 3);
// 传入x,y可以
Add(1, 2);
// 因为y不为缺省,所以不行
Add(1);
}
函数重载
在日常生活中我们也经常遇到一个词表达不同的意思,例如中国的体育项目的两大极端:
乒乓球和足球一个是“谁也赢不了”另一个也是“谁也赢不了”相同的词表达这不同的意思,c++中的重载也在此体现来。
关于重载的定义在这个图里面
#include <iostream>
// 重载函数 add,对两个整数相加
int add(int a, int b) {
return a + b;
}
// 重载函数 add,对两个浮点数相加
float add(float a, float b) {
return a + b;
}
int main() {
int result1 = add(1, 2); // 调用第一个 add 函数
float result2 = add(1.5f, 2.5f); // 调用第二个 add 函数
std::cout << "Result1: " << result1 << std::endl;
std::cout << "Result2: " << result2 << std::endl;
return 0;
}
内联函数
一般我们定义内联函数是为了减少小函数调用的时候栈帧开辟带来的效率降低。
而内联函数是为了来更好的完成,作为C语言宏函数的替代 ,但是注意内联函数放在头文件定义就好
// 宏函数
#define Add(x, y) ((x) + (y))
// 内联函数
inline int Add(int x, int y){
return x + y;
}