C++超详细讲解函数重载
1 函数重载的定义函数重载使用同一个函数名定义不同的函数。从本质上来看就是互相独立的不同函数每一个函数类型不同。因此函数重载是由函数名和参数列表决定的。注意函数返回值不能作为函数重载的重要依据2 构成函数重载的条件当满足以下三个条件之一时便可以构成函数重载函数参数个数不同123456789101112131415161718// 函数类型void(int)voidDemo(intx){printf(x %d\r\n, x);}// 函数类型void(int, int)voidDemo(intx,inty){printf(x %d\r\n, x);printf(y %d\r\n, y);}// 函数类型void(int, int, int)voidDemo(intx,inty,intz){printf(x %d\r\n, x);printf(y %d\r\n, y);printf(z %d\r\n, z);}函数参数类型不同12345678voidDemo(intx){printf(x %d\r\n, x);}voidDemo(charx){printf(x %c\r\n, x);}函数参数顺序不同12345678910voidDemo(charc,intx){printf(x %d\r\n, x);printf(c %c\r\n, c);}voidDemo(intx,charc){printf(x %d\r\n, x);printf(c %c\r\n, c);}但是如果函数的参数类型均相同仅仅顺序不同同样会出错如下所示的代码123456789101112voidDemo(intx,inty,intz){printf(x %d\r\n, x);printf(y %d\r\n, y);printf(z %d\r\n, z);}voidDemo(inty,intx,intz){printf(x %d\r\n, x);printf(y %d\r\n, y);printf(z %d\r\n, z);}3 编译器调用重载函数的准则编译器编译代码的流程将所有同名函数作为候选者尝试寻找可行的候选函数精确匹配实参通过默认参数匹配实参通过默认类型转换匹配实参匹配成功如果编译失败的话有如下两种情况找到的候选函数不唯一出现二义性失败无法匹配所有候选者函数未定义失败4 函数重载的注意事项4.1 避开重载带有指定默认值参数的函数在我们使用函数重载的过程要注意避开重载带有指定默认值参数的函数。否则在使用的过程中会出现二义性导致编译失败。如下代码所示的错误示例12345678910111213141516voidDemo(intx,inty){printf(x %d\r\n, x);printf(y %d\r\n, y);}voidDemo(intx,inty,intz 0){printf(x %d\r\n, x);printf(y %d\r\n, y);printf(z %d\r\n, z);}intmain(){Demo(1, 2);return0;}当对重载函数进行调用时Demo(1, 2)编译器是无法分辨我们到底是使用void Demo(int x, int y)函数还是使用void Demo(int x, int y, int z 0)函数因此无法编译通过。4.2 注意函数重载遇上函数指针重载函数的名称赋值给函数指针后当对函数指针进行调用时将根据下面的方式进行函数匹配首先根据重载规则挑选与函数指针参数列表一致的候选者然后根据候选者的函数类型与函数指针的函数类型进行匹配通过如下代码所示的示例进行解释12345678910111213141516171819202122232425typedefint(*PDemo)(inti);// Demo1intDemo(intx){returnx;}// Demo2intDemo(intx,inty){returnx * y;}// Demo3intDemo(constchar* c){returnstrlen(c);}intmain(){inti 0;PDemo pd Demo;// 一个参数因此不是Demo1就是Demo3// pd的函数类型是int(int)与Demo1相同因此就是Demo1i pd(1);return0;}如果将上述示例中函数指针的返回类型由int更改成double仍通过pd(1)进行调用的话该程序将不能被编译过因为没有与之匹配的重载函数。参数列表没有问题函数返回值类型有问题因为函数类型包含函数的返回值类型4.3 C编译器不能以 C 的方式编译重载函数由于 C 编译器将函数名和参数列表编译成目标名C 编译器将函数名编译成目标名这样 C 编译器编译后的重载函数的目标名一致于是便无法实现重载函数的功能。

相关新闻

C++标准库实战指南:从原理到应用,提升开发效率

C++标准库实战指南:从原理到应用,提升开发效率

1. 项目概述:为什么我们需要一本C库函数实战手册?如果你是一名C开发者,无论是刚入门的新手,还是摸爬滚打多年的老手,相信都曾有过这样的经历:面对一个看似简单的功能,却要花上半天时间去翻阅浩如…

2026/7/27 7:11:21阅读更多 →
CLIP模型原理与工业实践:多模态对比学习实战指南

CLIP模型原理与工业实践:多模态对比学习实战指南

1. CLIP模型的核心突破与设计理念2019年OpenAI团队提出的CLIP(Contrastive Language-Image Pre-training)模型,彻底改变了计算机视觉领域传统监督学习的范式。这个看似简单的"图像-文本对比学习"框架,背后蕴含着对多模态…

2026/7/27 7:11:21阅读更多 →
腾讯智能体开放平台(ADP)开发实战与核心功能解析

腾讯智能体开放平台(ADP)开发实战与核心功能解析

1. 腾讯智能体开放平台(ADP)初探作为一名长期关注AI技术落地的开发者,最近腾讯推出的智能体开放平台(ADP)引起了我的强烈兴趣。这个平台号称能让开发者像搭积木一样快速构建AI应用,听起来确实很诱人。经过两周的实测,我发现它确实解决了不少传…

2026/7/27 7:11:21阅读更多 →
SpringBoot家政服务管理系统开发实践与优化

SpringBoot家政服务管理系统开发实践与优化

1. 项目概述:SpringBoot家政服务管理系统家政服务行业近年来呈现爆发式增长态势,根据行业调研数据显示,2023年家政服务市场规模已突破7000亿元。在这个背景下,我们团队基于SpringBoot框架开发了一套家政服务管理系统(项…

2026/7/27 8:43:27阅读更多 →
C++与Flash交互实战:MFC桌面应用集成Flash图表组件

C++与Flash交互实战:MFC桌面应用集成Flash图表组件

1. 项目概述:跨越时代的桥梁 在嵌入式开发和传统桌面应用领域,C与Flash的交互是一个既经典又充满挑战的话题。虽然Flash Player作为浏览器插件已经退出历史舞台,但Flash技术本身,特别是其SWF文件格式和ActionScript脚本&#xff0…

2026/7/27 8:43:27阅读更多 →
LangChain框架解析:从模块化设计到多Agent实战

LangChain框架解析:从模块化设计到多Agent实战

1. LangChain技术全景解析:从入门到多Agent系统实战在自然语言处理领域,大型语言模型(LLM)的爆发式发展催生了一系列配套工具框架的诞生。作为当前最热门的LLM应用开发框架之一,LangChain正在重塑我们构建AI应用的范式。不同于直接调用API的简…

2026/7/27 8:43:27阅读更多 →
【腾讯元宝内容粘贴后符号丢失怎么办?】符号清理+格式还原,AI导出鸭深度横评

【腾讯元宝内容粘贴后符号丢失怎么办?】符号清理+格式还原,AI导出鸭深度横评

【腾讯元宝内容粘贴后符号丢失怎么办?】实测4种方案,AI导出鸭让Markdown符号零残留【腾讯元宝内容粘贴后符号丢失怎么办?】符号清理格式还原,AI导出鸭深度横评【腾讯元宝内容粘贴后符号丢失怎么办?】从星号乱码到完美排…

2026/7/27 8:43:27阅读更多 →
读半导体简史07计算世界

读半导体简史07计算世界

1. 摩尔定律1.1. 1965年,摩尔提出一个集成电路可容纳的晶体管数目,大约每年增加一倍1.2. 1975年,摩尔将每年修订为每24个月1.3. 产业界又将其修订为每18个月翻一番1.4. 摩尔定律的持续正确极大促进了集成电路的进步,为冯诺依曼体系…

2026/7/27 8:43:27阅读更多 →
【架构实战】Kubernetes Ingress实战:从路由转发到流量治理的统一入口

【架构实战】Kubernetes Ingress实战:从路由转发到流量治理的统一入口

一、开篇:网关讲完了,集群内的流量怎么出去? 前面两篇我们分别聊了 Kong 和 APISIX 两款主流 API 网关的落地实战。有读者在后台问我:“小花,网关我懂了,可是我的服务都跑在 Kubernetes 里,Pod …

2026/7/27 8:41:27阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/27 1:14:34阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/27 1:14:52阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/27 1:14:56阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:24阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:24阅读更多 →
2007-2023年各市区县生态文明建设示范区DID

2007-2023年各市区县生态文明建设示范区DID

数据简介 自改革开放以来,我国依赖高投入、高资源消耗和高污染等传统发展模式实现了经济短期内的快速增长, 然而这也导致了严重的生态环境危机。因此,国家有力于推动企业高质量经济发展,协同生态保护的方针,从而从201…

2026/7/27 0:00:24阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/26 19:05:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/26 19:05:21阅读更多 →