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

    文章

    526

    浏览量

    44817
  • C++
    C++
    +关注

    关注

    22

    文章

    2119

    浏览量

    75501
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于LockAI视觉识别模块:C++目标检测

    本文档基于瑞芯微RV1106的LockAI凌智视觉识别模块,通过C++语言做的目标检测实验。本文档展示了如何使用lockzhiner_vision_module::PaddleDet类进行目标检测,并通过lockzhiner_vision_module::Visualize函数
    的头像 发表于 06-06 13:56 ?251次阅读
    基于LockAI视觉识别模块:<b class='flag-5'>C++</b>目标检测

    C++学到什么程度可以找工作?

    C++开发的工作不仅需要深厚的编程功底,还要具备解决实际问题的能力,以及良好的沟通能力和团队协作精神。此外,持续学习和更新自己的知识体系也是保持竞争力的关键。
    发表于 03-13 10:19

    重载式编码器钢铁行业实际应用,一起看看吧!

    重载式编码器 钢铁冶金行业传感器解决方案 重载式编码器主要参数: 产品尺寸:195mm x 195mm 重载类型:超重载型 Extra Heavy Duty 输出信号:单独输出,双路输
    的头像 发表于 02-21 14:03 ?493次阅读
    <b class='flag-5'>重载</b>式编码器钢铁行业实际应用,一起看看吧!

    Spire.XLS for C++组件说明

    Spire.XLS for C++ 是一款专业的 C++ Excel 组件,可以用在各种 C++ 框架和应用程序中。Spire.XLS for C++ 提供了一个对象模型 Excel
    的头像 发表于 01-14 09:40 ?679次阅读
    Spire.XLS for <b class='flag-5'>C++</b>组件说明

    AKI跨语言调用库神助攻C/C++代码迁移至HarmonyOS NEXT

    /C++代码快速迁移至HarmonyOS NEXT。凭借卓越的兼容性,AKI已成为厂商与开发者打造鸿蒙原生应用过程中广泛使用的跨语言调用解决方案。 AKI是一款专为鸿蒙原生开发设计的FFI(外部函数接口
    发表于 01-02 17:08

    运动控制卡周期上报实时数据IO状态C++

    使用C++进行运动控制卡的周期上报功能实现
    的头像 发表于 12-17 13:59 ?867次阅读
    运动控制卡周期上报实时数据IO状态<b class='flag-5'>之</b><b class='flag-5'>C++</b>篇

    同样是函数,在CC++中有什么区别

    ,即使没有数据返回,也得写 void。 第二个函数名。 C语言的函数名绝对不能重名,除了用上 weak 这样的黑科技。同一个项目中,函数重名就会提示重复定义。
    的头像 发表于 11-29 10:25 ?954次阅读

    C++新手容易犯的十个编程错误

    简单的总结一下?C++ 新手容易犯的一些编程错误,给新人们提供一个参考。 1 有些关键字在 cpp 文件中多写了 对于 C++ 类,一些关键字只要写在 .h 中就好,cpp 中就不用再加上了,比如
    的头像 发表于 11-15 12:42 ?1061次阅读

    探索字节队列的魔法:多类型支持、函数重载与线程安全

    探索字节队列的魔法:多类型支持、函数重载与线程安全代码难度指数:文章学习重点:参数宏的使用技巧一、引言在嵌入式系统和实时应用中,数据的传输和处理是至关重要的。字节队列(ByteQueue)是一种重要
    的头像 发表于 11-15 01:08 ?1279次阅读
    探索字节队列的魔法:多类型支持、<b class='flag-5'>函数</b><b class='flag-5'>重载</b>与线程安全

    傅里叶变换的数学原理

    傅里叶变换的数学原理主要基于一种将函数分解为正弦和余弦函数(或复指数函数)的线性组合的思想。以下是对傅里叶变换数学原理的介绍: 一、基本原理
    的头像 发表于 11-14 09:27 ?1867次阅读

    C7000 C/C++优化指南用户手册

    电子发烧友网站提供《C7000 C/C++优化指南用户手册.pdf》资料免费下载
    发表于 11-09 15:00 ?0次下载
    <b class='flag-5'>C</b>7000 <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>优化指南用户手册

    ADL-GPIB IEEE 488命令集函数参考手册

    使用 Microsoft Visual C/C++ 创建一个 Windows 2000/NT/98 ADL-GPIB 应用程序 通过使用 ADL-GPIB 和 Microsoft Visual C/
    发表于 11-04 17:43 ?2次下载

    TMS320C6000优化C/C++编译器v8.3.x

    电子发烧友网站提供《TMS320C6000优化C/C++编译器v8.3.x.pdf》资料免费下载
    发表于 11-01 09:35 ?1次下载
    TMS320<b class='flag-5'>C</b>6000优化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>编译器v8.3.x

    C语言和C++中结构体的区别

    同样是结构体,看看在C语言和C++中有什么区别?
    的头像 发表于 10-30 15:11 ?823次阅读

    C7000优化C/C++编译器

    电子发烧友网站提供《C7000优化C/C++编译器.pdf》资料免费下载
    发表于 10-30 09:45 ?0次下载
    <b class='flag-5'>C</b>7000优化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>编译器