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/8/18 14:51:52 阅读更多 →
CLIP模型原理与工业实践:多模态对比学习实战指南

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

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

2026/8/19 18:06:04 阅读更多 →
腾讯智能体开放平台(ADP)开发实战与核心功能解析

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

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

2026/8/19 19:00:10 阅读更多 →

最新新闻

深挖C语言:数据在内存中的存储

深挖C语言:数据在内存中的存储

目录 1.整数在内存中的存储 1.1 原码 反码 补码 1.2 大小端字节序及其判断 1.3 整型提升 2. 练习 1. 设计程序来判断当前机器的字节序 2. 判断输出的结果及其原因 3.截断与提升 4. 判读数组长度 5. 判断循环 6. 判断输出结果 3.浮点数在内存中的存储 3.1 浮点数的…

2026/8/19 22:52:07 阅读更多 →
单片机毕业设计-基于 STM32/51 单片机的智能气压声光预警与移动端监控系统 基于单片机与蓝牙 APP 的气压阈值报警装置设计(023203)

单片机毕业设计-基于 STM32/51 单片机的智能气压声光预警与移动端监控系统 基于单片机与蓝牙 APP 的气压阈值报警装置设计(023203)

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

2026/8/19 22:52:07 阅读更多 →
RT-Thread内核移植实战:在iCore3双核心板(STM32F407)上构建多线程应用

RT-Thread内核移植实战:在iCore3双核心板(STM32F407)上构建多线程应用

1. 项目背景与核心价值最近在折腾一块挺有意思的板子——银杏科技的iCore3双核心板。这板子有意思的地方在于,它把一颗STM32F407和一颗Altera的Cyclone IV FPGA给“捏”在了一起,形成了一个ARMFPGA的异构计算平台。硬件底子很扎实,但官方给的…

2026/8/19 22:52:07 阅读更多 →
成本管理中的挣值分析(Earned Value Analysis, EVA)是一种项目绩效测量方法,通过整合范围、进度和成本数据

成本管理中的挣值分析(Earned Value Analysis, EVA)是一种项目绩效测量方法,通过整合范围、进度和成本数据

成本管理中的挣值分析(Earned Value Analysis, EVA)是一种项目绩效测量方法,通过整合范围、进度和成本数据,评估项目执行绩效。核心是三个基本参数及由此导出的关键指标: ✅ 三大基础参数: PV(P…

2026/8/19 22:52:07 阅读更多 →
i.MX6ULL嵌入式Socket编程实战:从TCP回显到生产级应用

i.MX6ULL嵌入式Socket编程实战:从TCP回显到生产级应用

这类实战扩展最值得先看的不是功能列表,而是能不能在你自己的开发板上稳定跑起来,以及从单次通信到批量任务、从简单回显到实际应用场景的完整链路怎么走。如果你手头有 i.MX6ULL 这类嵌入式板子,想验证网络功能或者为后续物联网项目打基础&a…

2026/8/19 22:52:07 阅读更多 →
共享电动车商业模式失败分析:从资本风口到城市弃儿的兴衰启示

共享电动车商业模式失败分析:从资本风口到城市弃儿的兴衰启示

1. 从“风口上的猪”到“城市弃儿”:共享电动车的兴衰简史大概在2017年前后,共享电动车和它的“前辈”共享单车一样,成了街头巷尾最热的话题。资本、创业者、媒体,几乎所有人都相信,这是又一个能改变城市出行格局的“风…

2026/8/19 22:51:06 阅读更多 →

日新闻

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

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

2026/8/19 0:00:30 阅读更多 →
AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

1. 项目概述:当AI开始“猜”数学定理 最近在AI研究圈里,一个名为“Moonshine”的项目引起了不小的讨论。这名字本身就挺有意思,直译是“月光”,但在数学史上,它特指一个神秘而美丽的联系——魔群月光猜想,连…

2026/8/19 0:00:30 阅读更多 →
WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 一台刚配的新电脑,跑《魔兽争霸3》却卡成 PPT——这…

2026/8/19 0:02:31 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/19 11:55:18 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/19 9:46:27 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/19 11:55:16 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/19 5:04:55 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/19 7:42:22 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/19 11:55:13 阅读更多 →