0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C++之重载函数学习总结

电子设计 来源:电子设计 作者:电子设计 2020-12-24 17:10 次阅读

一、C++中的函数重载:

1、函数重载的概念:

用同一个函数名定义不同的函数

当函数名和不同的参数搭配时函数的含义不同

注意:在c语言中是没有函数重载这个概念的。

代码示例演示:

上面在c++编译器里面编译时没有问题的,如果放在c语言编译器里面编译是会报错的:

所以说c语言里面不支持函数重载。

2、函数重载至少要满足下面的一个条件:

参数个数不同

参数类型不同

参数顺序不同

比如下面两个函数可以构造重载函数吗?

答案肯定是可以构造重载函数的,读者可以自己试试(这个比较好理解)。

3、当函数默认参数遇上函数重载会发生什么?

例如下面的两个函数:

到底会发生啥,我们还是看下面这个实验:

运行结果:

从上面报错的结果里面有一个单词ambiguous(意思是梦棱两可的),也就是说默认参数这种使用时不允许的。

4、C++编译器调用重载函数的准则:

将所有同名函数作为候选者

尝试寻找可行的候选函数:

精确匹配实参

通过默认参数能够匹配实参

通过默认类型转换匹配实参

匹配失败:

最终寻找到的候选函数不唯一,则出现二义性,编译失败

无法匹配所有候选者,函数未定义编译失败

5、函数重载的注意事项:

重载函数在本质上是相互独立的不同函数

重载函数的函数类型不同

函数返回值不能作为函数重载的依据

函数重载是由函数名和参数列表决定的

代码测试:

运行结果:

从输出结果我们可以看出这两个函数的入口地址不一样,这表明这两个函数是不同的函数。

6、小结:

函数重载是c++中引入的概念

函数重载的本质是相互独立的不同函数

c++中通过函数名和函数参数确定函数调用

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 可编程逻辑
    +关注

    关注

    7

    文章

    512

    浏览量

    43907
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72901
收藏 人收藏

    评论

    相关推荐

    STM32CubeMX如何在*.c源文件中使用c++特性?

    用arm-xxx-gcc编译器进行编译,*.cpp文件会使用arm-xxx-g++编译器进行编译,STM32CubeMX生成文件都是*.c源文件,在不修改文件名后缀情况下,我现在是想在*.c源文件中使用c++特性(比如
    发表于 04-25 06:15

    什么是C++函数? 应该怎么定义? 用途是什么?

    什么是C++函数? 应该怎么定义? 主要用途是什么?
    发表于 11-08 06:58

    Python 重载与重写的概念

    ,随后不久我便意识到犯下了一个错误。 我们先来看看重载与重写的概念: 重载重载的条件如下: 1.一个类里面 2.方法名字相同 3.参数不同 而参数不同可分为:参数类型不同,参数个数不同。而上一次推送中,对on_created
    的头像 发表于 11-03 15:13 293次阅读
    Python <b class='flag-5'>重载</b>与重写的概念

    迅为RK3568开发板QT学习手册

    ,**《iTOP-3568开发板QT学习手册》**带你打通QT的任督二脉。 第1章 C++基础 1.1 C++语言特点 1.1.1 C++程序编译 1.1.2
    发表于 10-25 10:29

    C++程序设计精简版

    章 指针第 7 章 自定义数据类型 第 3 篇 基于对象的程序设计第 8 章 类和对象第 9 章 关于类和对象的进一步讨论第 10 章 运算符重载 第 4 篇 面向对象的程序设计第 11 章 继承与派生第 12 章 多态性与虚函数第 13 章 输入输出流第 14 章
    发表于 10-09 07:26

    C++重载运算符和重载函数详解

    在计算机程序设计中,运算符重载(英语:operator overloading)是多态的一种。这里,运算符(比如+,=或==)被当作多态函数,它们的行为随着其参数类型的不同而不同。运算符并不一定总是符号。
    发表于 09-20 17:14 417次阅读

    计算数学中的函数迭代介绍

    函数迭代是数学中一个非常重要和有趣的主题,它在不同的领域有着不同的应用和着眼点。在动力系统中,函数迭代可以揭示复杂系统的演化规律和混沌现象;
    的头像 发表于 08-30 10:11 754次阅读
    计算<b class='flag-5'>数学</b>中的<b class='flag-5'>函数</b>迭代介绍

    C++生成Dll与回调函数测试

    描述了VS环境下,通过C++生成dll的方法,测试回调函数
    的头像 发表于 08-29 16:05 643次阅读
    <b class='flag-5'>C++</b>生成Dll与回调<b class='flag-5'>函数</b>测试

    使用C++ sort函数对vector进行自定义排序

    今天在学一些C++ STL容器,看到sort函数允许自定义排序规则,小小地实操了一下。
    的头像 发表于 07-22 10:12 1057次阅读

    C++ std::tie函数的作用和用法

    C++中std::tie函数的作用就是从元素引用中生成一个tuple元组,其在头文件中定义
    的头像 发表于 07-18 17:28 573次阅读

    c++函数对象与内建函数

    重载函数调用操作的类,其对象常称之为函数对象。
    的头像 发表于 07-17 09:46 356次阅读
    <b class='flag-5'>c++</b>之<b class='flag-5'>函数</b>对象与内建<b class='flag-5'>函数</b>

    嵌入式-C++函数重载

    一、什么是函数重载 两个以上的函数,具有相同的函数名,通过参数的类型和参数的个数不同。编译器自行匹配,自动确定调用哪一个函数 二、
    发表于 06-28 13:54

    傅里叶变换如何用于深度学习领域

    机器学习和深度学习中的模型都是遵循数学函数的方式创建的。从数据分析到预测建模,一般情况下都会有数学原理的支撑,比如:欧几里得距离用于检测聚类
    的头像 发表于 06-14 10:01 792次阅读
    傅里叶变换如何用于深度<b class='flag-5'>学习</b>领域

    factory机制的本质是什么?factory机制式的重载的过程

    factory机制本质是对SystemVerilog中new函数重载
    的头像 发表于 05-26 14:55 636次阅读
    factory机制的本质是什么?factory机制式的<b class='flag-5'>重载</b>的过程

    c++常见函数

    c++常见函数集包括:线性代数方程组的解法、插值、数值积分、特殊函数函数逼近、随机数排序、特征值问题、数据拟合、方程求根和非线性方程组的解法、函数
    发表于 05-09 14:52 1次下载