💓博主CSDN主页:杭电码农-NEO💓
⏩专栏分类:C++初阶之路⏪
🚚代码仓库:NEO的学习日记🚚
🌹关注我🫵带你学习排序知识
🔝🔝
1. 前言
写C语言代码的时候
特别是在写数据结构时:
经常忘记传函数的参数
或者当前不需要什么参数
C++增加了缺省参数来解决这个问题
而为了解决相似功能的函数的函数名问题
C++增加了函数重载来解决这个问题
本篇文章将简单介绍缺省参数
并着重讲解函数重载的底层原理!
2. 缺省参数
缺省参数是声明或定义函数时
为函数的参数指定一个缺省值
在调用该函数时,若没有指定实参
则采用该形参的缺省值
否则使用指定的实参
缺省参数分类:
- 全缺省
- 半缺省
2.1 全缺省
类似于这样的代码:
void Func(int a = 10, int b = 20, int c = 30) { cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; cout<<"c = "<<c<<endl; }
全缺省指的是函数的所有参数都给缺省值
有四种调用此函数的方式:
- 什么都不传:
Func();
此时系统默认a,b,c的值分别为
10 - 20 - 30
- 只传一个参数:
Func(15);
此时,a的值为15
而系统默认b,c的值为:20-30
- 传两个参数:
Func(15,25);
此时a,b的值为:15 - 25
系统默认c的值为30
- 三个参数都传:
Func(15,25,35);
此时a,b,c的值为:15-25-35
注意: 传参不能写成这种形式:
Func(,25,); Func(,,35); Func(,25,35); Func(15,,35);
2.2 半缺省
半缺省类似于这种形式:
void Func(int a, int b = 10, int c = 20) { cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; cout<<"c = "<<c<<endl; }
只要有参数没有给缺省值
那么它就是半缺省的
注意:
- 半缺省参数必须从右往左依次来给出,不能间隔着给
- 缺省参数不能在函数声明和定义中同时出现
- 缺省值必须是常量或者全局变量
比如下面这样定义半缺省是不行的:
void Func1(int a=10,int b,int c); void Func2(int a,int b=20,int c); //有缺省值的前提是它的右边的参数都有缺省值
3. 函数重载概念
以前有一个笑话:国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个
是男足。前者是“谁也赢不了!”,后者是“谁也赢不了
这里使用了一语双关.
而函数重载的概念和它类似:
函数重载是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型不同的问题。
举个例子:
void func(int i,char ch) //函数1 { //... } void func(char ch,int i) //函数2 { //... }
函数1和2可以同时存在
并且它们不是同一个函数