关注不迷路!本节涉及C++缺省参数、函数重载。
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 ✨ 加关注👀期待与你共同进步!
1.缺省参数
为什么要引用缺省参数?
缺省参数是指在定义函数时给某个参数设置一个默认值,当函数被调用时,如果没有传递该参数,就会使用默认值。缺省参数可以简化函数的调用,避免繁琐的参数传递过程,同时也提高了函数的灵活性。
1.1 缺省参数的概念
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。
举例:
void Func(int a = 0)
{
cout<<a<<endl;
}
int main()
{
Func(); // 没有传参时,使用参数的默认值
Func(999); // 传参时,使用指定的实参
return 0;
}

2.2 缺省参数的分类
全缺省参数:全缺省全缺省顾名思义,形参全部预设了缺省值.
举例:
- 第一次调用 Func 时,什么都没有传,所以结果直接就采用形参中的缺省值。
- 第二次调用 Func 时,传了三个参数,结果全部使用的实参值。
- 第三次调用 Func 时,传了两个参数,结果a,b使用了实参值, 形参c 使用了缺省值。
- 最后一次调用 Func 时,只穿了1个参数,结果只有a使用了实参值.形参b,c使用了缺省值。
半缺省函数: 半缺省不是缺省一半,是部分缺省 -> 函数中的所有参数从右往左连续地缺省一部分。
注意,是形参预设值,从右往左的提前连续预设,也叫从右往左连续的缺省。
举例:
void Func(int a, int b, int c = 20) //这是半缺省
void Func(int a, int b = 10, int c = 20) // 这也是半缺省
void Func(int a = 5, int b = 10, int c = 20) //这刚讲过 全缺省
注:
1. 半缺省参数必须从右往左依次来给出,不能间隔着给
2. 缺省参数不能在函数声明和定义中同时出现3. 缺省值必须是常量或者全局变量
4. C语言不支持(编译器不支持)
2.函数重载
通俗点讲,一句话多重使用含义
函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这
些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型
不同的问题。
通常有以下三种情况可以构成函数重载:
1、参数类型不同
2、参数个数不同
3、参数类型顺序不同
参数的类型、个数、顺序 ,有一个不同即可触发重载机制。
返回值、缺省值不同就不支持函数重载!
#include<iostream>
using namespace std;
// 1、参数类型不同
int Add(int left, int right)
{
cout << "int Add(int left, int right)" << endl;
return left + right;
}
double Add(double left, double right)
{
cout << "double Add(double left, double right)" << endl;
return left + right;
}
// 2、参数个数不同
void f()
{
cout << "f()" << endl;
}
void f(int a) {
cout << "f(int a)" << endl;
}
// 3、参数类型顺序不同
void f(int a, char b)
{
cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
cout << "f(char b, int a)" << endl;
}
int main()
{
Add(10, 20);
Add(10.1, 20.2);
f();
f(10);
f(10, 'a');
f('a', 10);
return 0;
}
在C++中可以为两个或两个以上的函数提供相同的函数名称,只要参数类型不同,或参数类型相同而参数的个数不同, 称为函数重载。
为什么C++支持函数重载而C语言不支持呢?
因为c语言多个同名函数调用会出现命名冲突和调用异常,而c++为了去填补C语言的坑,补充了函数重载机制。C语言没办法支持重载,因为同名函数没办法区分。而C++是通过函数修饰规则来区分,只要参数不同,修饰出来的名字就不一样,就支持了重载。
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 ✨ 加关注👀期待与你共同进步!