news 2026/6/27 1:49:31

c++--函数重载

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
c++--函数重载

概念

函数重载就是在同一个作用域中定义多个形参列表(参数个数 或 类型 或 类型顺序)不同函数名相同的函数,在调用函数时根据传入的实参列表就能在多个同名函数中调用最匹配的一个。


原理

简单来说,每一份代码都会在汇编阶段生成一张符号表,符号表里面有函数名和函数地址的映射关系。程序运行时通过函数名找到函数地址并执行函数。

可以预见的是,符号表里面的函数名如果只是函数名,那么函数重载不可能实现,因为所有重载函数的函数名都是一样的,无法区分。

c++编译器通过在汇编时用形参列表的信息修饰函数名来区分同名不同参的函数,在这种情况下形参列表不同函数名相同的函数在符号表中的函数名是不同的,可以区分开,以此实现函数重载。

c语言编译器不会修饰函数名,因此c语言不支持函数重载。


函数重载的例子

以上都是函数重载。


函数重载的坑

虽然一个是缺省参数,一个是正常参数,但参数类型,个数,顺序都一样,无法区分,不能构成函数重载:

虽然构成函数重载,编译器也不会报错。但是这种重载在调用时可能存在调用歧义,比如调用的时候不传参数:

他们具有重载性能,但他们不是重载关系,因为x1和x2的作用域并不同(using只是把命名空间的内容引入全局作用域,但命名空间中函数或变量的实际作用作用域仍然是命名空间):

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 19:36:32

智能车竞赛核心技术解析:从PID控制到传感器融合的工程实践

1. 项目概述:从一场决赛视频到完整的智能车技术复盘十多年前,我还在大学实验室里和队友们没日没夜地调车,那时候最激动人心的时刻,就是围着一台小小的CRT显示器,反复观看全国总决赛各路强队的比赛视频。2011年第六届飞…

作者头像 李华
网站建设 2026/6/23 19:36:33

RAG瓶颈何在?Meta新方案 REFRA G用RL策略过滤信息,性能飙升30倍!

经典RAG检索技术常因将"相似"误认为"相关"导致大量无用信息传递给LLM,增加计算负担和错误概率。Meta提出的REFRAG方案通过引入强化学习策略,实现Chunk压缩、策略过滤和选择性展开,有效剔除噪声信息,在保持或提…

作者头像 李华
网站建设 2026/6/23 19:45:47

告别Pandas!用PyArrow高效读取Parquet文件的3种实战姿势(附完整代码)

告别Pandas!用PyArrow高效读取Parquet文件的3种实战姿势(附完整代码) 在数据工程领域,处理海量数据时经常会遇到内存瓶颈和性能问题。当Parquet文件达到GB级别时,传统的Pandas读取方式往往显得力不从心。本文将揭示三种…

作者头像 李华
网站建设 2026/6/23 19:36:33

推荐文章:解锁Vivado无限潜能 —— 长效License轻松获取

推荐文章:解锁Vivado无限潜能 —— 长效License轻松获取 【下载地址】Vivado长期有效License下载 本仓库提供了一个适用于2037年前任何Vivado版本的长期有效License文件。该License源于eetop论坛,经过亲测确认可用。 项目地址: https://gitcode.com/op…

作者头像 李华