C++入门第三节--缺省参数、函数重载

关注不迷路!本节涉及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++是通过函数修饰规则来区分,只要参数不同,修饰出来的名字就不一样,就支持了重载。

如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 ✨ 加关注👀

期待与你共同进步!

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-03 04:58:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-03 04:58:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-03 04:58:02       87 阅读
  4. Python语言-面向对象

    2024-05-03 04:58:02       96 阅读

热门阅读

  1. DDS 相关中文版标准资料

    2024-05-03 04:58:02       34 阅读
  2. 套接字概念的理解

    2024-05-03 04:58:02       29 阅读
  3. c++ 判断点和折线 距离

    2024-05-03 04:58:02       33 阅读
  4. Redis 实现分布式Session 登录相关细节

    2024-05-03 04:58:02       30 阅读
  5. VSCode 配置 Qt 开发环境

    2024-05-03 04:58:02       32 阅读
  6. 模拟实现将字符串转化为整形

    2024-05-03 04:58:02       36 阅读
  7. Matlab基本语法

    2024-05-03 04:58:02       32 阅读