【C++入门】Cyber骇客的同名异梦——【C++重载函数】(与C的函数差异)



⚡ CYBER_PROFILE ⚡
/// SYSTEM READY ///

[WARNING]: DETECTING HIGH ENERGY

🌊 🌉 🌊 心手合一 · 水到渠成

>>> ACCESS TERMINAL <<<
[ 🦾 作者主页 ][ 🔥 C语言核心 ]
[ 💾 编程百度 ][ 📡 代码仓库 ]
---------------------------------------
Running Process: 100% | Latency: 0ms

索引与导读

  • 📘1)核心定义
  • 📘2)如何构成重载
    • 2.1 参数类型不同
    • 2.2 参数个数不同
    • 2.3 参数顺序不同
  • 📘3)常见误区与陷阱
    • 3.1)返回值类型不同 不构成重载
    • 3.2)缺省参数导致的二义性
    • 3.3)类型别名
  • 📘4)为何C语言不支持函数重载?
  • 函数重载代码示例
  • 💻结尾— 核心连接协议

📘1)核心定义

在自然语言中,一个词在不同语境下可能有不同的含义(一词多义)。在C++ 中函数重载允许在同一作用域中声明多个名称相同形参列表不同的函数。

我们在调用函数时,编译器会根据传递的实参类型,自动推演并匹配最合适的那个函数版本。这属于C++静态多态(Static Polymorphism)的一种体现,即在编译期间就确定了具体的函数调用



📘2)如何构成重载

🚩要让两个同名函数共存,它们的函数签名必须不同

  • 主要体现在以下三个维度:

2.1 参数类型不同

#include<iostream>usingnamespacestd;voidprint(inti){cout<<"Int: "<<i<<endl;}voidprint(doubled){cout<<"Double: "<<d<<endl;}intmain(){print(10);// 匹配 print(int)print(3.14);// 匹配 print(double)return0;}

2.2 参数个数不同

voidfunc(inta){cout<<"One parameter"<<endl;}voidfunc(inta,intb){cout<<"Two parameters"<<endl;}

2.3 参数顺序不同

voidfunc(inta,charb);// 版本 1voidfunc(chara,intb);// 版本 2,构成重载


📘3)常见误区与陷阱

3.1)返回值类型不同 不构成重载

intadd(inta,intb);voidadd(inta,intb);// ❌ 错误:编译报错

原因:在调用函数时(例如add(1, 2);),调用者可以选择忽略返回值。此时编译器无法根据上下文判断应该调用哪一个函数,从而产生二义性


3.2)缺省参数导致的二义性

虽然两个函数参数个数不同可以重载,但如果结合了默认参数,可能会翻车

voidfunc(inta,intb=10){cout<<"Version 1"<<endl;}voidfunc(inta){cout<<"Version 2"<<endl;}intmain(){// func(10, 20); // OK, 调用 Version 1// func(10); // ❌ 错误:二义性!// 编译器OS:你是想调用 Version 2,还是想调用带有默认参数的 Version 1?我太难了。return0;}

3.3)类型别名

typedefintInteger;voidfunc(inta);voidfunc(Integer a);// ❌ 错误:重定义

原因:Integer本质上就是int,编译器眼里它们是完全一样的东西



📘4)为何C语言不支持函数重载?

  • C 语言的处理方式

C语言编译器在编译代码时,生成的符号表中,函数名就是源代码中的名字

源码:void add(int a, int b)

符号表:_add

如果在C语言中写两个add函数,符号表中就会有两个_add,链接器在链接时就会报错:"Multiple definition of symbol"(符号重定义)

  • C++ 的“名称修饰”
    C++为了支持重载,引入了名称修饰机制

编译器会根据函数的参数类型参数个数参数顺序等信息,对函数名进行“加密”和修饰,生成一个全局唯一的符号名

以 GCC 编译器为例(不同编译器规则不同):


结论:
虽然我们在代码里看到的都是func,但在编译器的眼里,它们分别是_Z4funci_Z4funcd_Z4funcii
由于底层的符号名不同,链接器自然就能区分它们,从而实现了重载



函数重载代码示例

#include<iostream>usingnamespacestd;// 1. 参数类型不同intAdd(intleft,intright){cout<<"int Add(int left, int right)"<<endl;returnleft+right;}doubleAdd(doubleleft,doubleright){cout<<"double Add(double left, double right)"<<endl;returnleft+right;}// 2. 参数个数不同voidf(){cout<<"f()"<<endl;}voidf(inta){cout<<"f(int a)"<<endl;}// 3. 参数类型顺序不同voidf(inta,charb){cout<<"f(int a, char b)"<<endl;}voidf(charb,inta){cout<<"f(char b, int a)"<<endl;}// 返回值不同不能作为重载条件,因为调用时也无法区分//void fxx()//{}////int fxx()//{// return 0;//}// 下面两个函数构成重载// f() 但是调用时,会报错,存在歧义,编译器不知道调用谁voidf1(){cout<<"f()"<<endl;}voidf1(inta=10){cout<<"f(int a)"<<endl;}intmain(){Add(10,20);Add(10.1,20.2);f();f(10);f(10,'a');f('a',10);return0;}


💻结尾— 核心连接协议

警告:🌠🌠正在接入底层技术矩阵。如果你已成功破解学习中的逻辑断层,请执行以下指令序列以同步数据:🌠🌠


【📡】 建立深度链接:关注本终端。在赛博丛林中深耕底层架构,从原始代码到进阶协议,同步见证每一次系统升级。

【⚡】 能量过载分发:执行点赞操作。通过高带宽分发,让优质模组在信息流中高亮显示,赋予知识跨维度的传播力。

【💾】 离线缓存核心:将本页加入收藏。把这些高频实战逻辑存入你的离线存储器,在遭遇系统崩溃或需要离线检索时,实现瞬时读取。

【💬】 协议加密解密:评论区留下你的散列码。分享你曾遭遇的代码冲突或系统漏洞(那些年踩过的坑),通过交互式编译共同绕过技术陷阱。

【🛰️】 信号频率投票:通过投票发射你的选择。你的每一次点击都在重新定义矩阵的进化方向,决定下一个被全量拆解的技术节点。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1159912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于西门子 PLC S7 - 1200 系列的立体车库设计之旅

基于西门子PLC S7-1200系列的立体车库&#xff0c;立体库设计。 有流程图&#xff0c;电气原理图&#xff0c;IO表&#xff0c;流程图和文字报告等等 可以wincc仿真运行2-2287嘿&#xff0c;各位技术宅们&#xff01;今天咱来聊聊基于西门子 PLC S7 - 1200 系列的立体车库设计&…

【漏洞挖掘】小白是如何挖漏洞的(技巧篇)入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

目录&#xff1a; 怎么找漏洞 找到后如何挖漏洞 关于通杀漏洞N day漏洞的挖掘 漏洞如何提交 每小结都有提供对应的案例&#xff0c;简直不要太nice&#xff01; 这个月的SRC活动也快开始了&#xff0c;看到群里的小伙伴在问如何找漏洞&#xff0c;SQL注入的漏洞咋找&#xff0c…

ESP32C3串口下载关键引脚及触发方法

串口下载 手册原文关键引脚操作方式 核心必接引脚&#xff1a; 最基础的下载连接只需接 U0RXD、U0TXD、GND、3.3V、GPIO9、EN 这 6 个引脚&#xff08;其中 GPIO9和 EN 是控制下载模式的关键&#xff09;。 注意&#xff1a;电脑端的 USB-TTL 模块的 TX 要接 ESP32 的 RX&#…

功率电路IGBT吸收电容原理,吸收电容选型

吸收电容原理 一、IGBT开关过程中的电压尖峰成因 1.寄生电感效应 IGBT在关断瞬间&#xff0c;电流变化率(di/dt)急剧增大。由于主回路中存在的线路电感(Lstray)及器件封装寄生电感(Lpar)&#xff0c;根据公式&#xff1a;产生的反向电动势会叠加在IGBT的集电极-发射极电压(VCE)…

三甲医院如何实现业务“零中断”?基于zData X一体机的数据库灾备体系实践分享

在医疗行业&#xff0c;信息系统早已成为医院运行不可分割的一部分。HIS、EMR、LIS、PACS这类关键业务系统背后的数据库&#xff0c;不仅承载着高频业务访问&#xff0c;更直接关系到医疗服务的连续性与安全性&#xff0c;影响着门诊秩序、临床流程、就医体验&#xff0c;甚至患…

如何粘贴为纯文本?WORD如何粘贴为纯文本?如何把“CTRL+SHIFT+V”改为“粘贴为纯文本”

工作中我们编辑WORD时&#xff0c;需要粘贴为纯文本&#xff0c;但有时又希望带格式粘贴。 如何默认“CTRLV”为带格式粘贴&#xff0c;而“CTRLSHIFTV”为粘贴为纯文本呢&#xff1f; 下载POWERTOYS 下载链接&#xff1a; 【免费】PowerToys安装程序&#xff08;微软系统增强…

泰裤辣!NGS数据过滤:从“大怨种”到“高质量数据”

做NGS&#xff08;下一代测序/高通量测序&#xff09;实验时&#xff0c;我们总盼着测序仪“吐”出的原始数据能直接用——毕竟从样本制备到上机测序&#xff0c;每一步都耗费了时间和经费。但现实是&#xff0c;刚拿到的原始数据里藏着不少“杂质”&#xff0c;直接用来分析只…

零翔出玩组局陪玩系统:技术架构与功能创新引领社交旅游新风尚

摘要 本文深入探讨了零翔出玩组局陪玩系统的技术架构、核心功能及其市场应用。该系统集组局、社群、论坛、搭子匹配、旅游线路规划、团购票券、线上线下陪玩、裂变营销等多功能于一体&#xff0c;通过先进的技术架构和丰富的功能选择&#xff0c;为用户提供了一站式社交旅游服…

2026 年,还有必要做程序员兼职吗?我把常见平台都试了一遍

这两年&#xff0c;身边开始做程序员兼职的人明显多了起来。有的是因为主业不稳定&#xff0c;想多留一条路&#xff1b;有的是收入遇到瓶颈&#xff0c;想试试能不能把技术变现&#xff1b;也有人单纯不想把时间全部押在一家公司身上。但真正开始接单后&#xff0c;很多人都会…

腾讯 CodeBuddy AIIDE 来了!不写一句代码就能搞定产品设计研发、数据库、部署!

一、项目简介及目录结构项目简介&#xff1a;腾讯 CodeBuddy AIIDE 是一款革命性的智能开发平台&#xff0c;突破传统编码模式&#xff0c;通过 AI 技术实现“零代码”完成产品设计、研发、数据库管理及部署全流程。旨在降低技术门槛&#xff0c;提升开发效率&#xff0c;让开发…

非线性悬架,UKF状态估计 软件使用:Matlab/Simulink 适用场景:采用模块化建模...

非线性悬架&#xff0c;UKF状态估计 软件使用&#xff1a;Matlab/Simulink 适用场景&#xff1a;采用模块化建模方法&#xff0c;搭建空气悬架模型&#xff0c;UKF状态估计模型&#xff0c;可实现悬架动挠度等状态估计。 包含&#xff1a;simulink源码文件&#xff0c;详细建模…

江大新财务系统介绍

该系统支持PC端和手机端操作&#xff0c;具备发票自动识别、费用项自动映射、多项目报销、智能客服等功能&#xff0c;旨在提升师生报销效率和体验。系统涵盖日常报销、差旅报销、酬金报销和借款等业务场景&#xff0c;通过自动化流程减少人工操作&#xff0c;并提供审批流程跟…

[Windows] 正牌STEAM小黄鸭(给游戏,视频帧数翻倍更丝滑) Lossless Scaling 3.2.2 免安装版

[Windows] 正牌STEAM小黄鸭&#xff08;给游戏&#xff0c;视频帧数翻倍更丝滑&#xff09; Lossless Scaling 3.2.2 免安装版 链接&#xff1a;https://pan.xunlei.com/s/VOiw5d_4wgZ7bmCwonYYt-tOA1?pwdzkak# 正牌小黄鸭&#xff0c;为什么说正牌呢&#xff0c;&#xff0…

点云转mesh

Point2Mesh Start with MeshLib SDK: Live Demo, Try App, or Docs

云晨科技模版项目介绍说明

一、项目背景及简介分析了传统开发模式的痛点介绍云晨科技作为企业级全栈开发模版解决方案平台的定位强调60模版、10全栈方案、200组件的核心资源视频介绍&#xff1a;二、目标客户软件开发公司个人开发者/自由职业者创业团队/初创公司传统企业数字化转型团队教育培训机构三、平…

汽车动力学模型探究:线性二自由度、Carsim与运动学模型

线性二自由度模型&#xff0c;对比carsim模型&#xff0c;运动学模型在汽车动力学研究领域&#xff0c;线性二自由度模型、Carsim模型以及运动学模型各自有着独特的地位和应用场景&#xff0c;今天咱就来唠唠它们之间的对比。 线性二自由度模型 线性二自由度模型算是汽车动力学…

【开题答辩全过程】以 养老服务微信小程序为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

VMware数据恢复收费情况亲测分享

数据恢复行业分析&#xff1a;金海境科技的卓越表现 行业痛点分析 在数据恢复领域&#xff0c;面临着诸多技术挑战。随着数字化进程加速&#xff0c;数据量爆发式增长&#xff0c;存储设备故障、软件系统崩溃、人为误删除等情况频繁出现&#xff0c;导致数据丢失风险大增。据…

【开题答辩全过程】以 台球俱乐部管理系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

哈希(Hash)算法与系统安全:从概念到实战的完整指南

📺 B站视频讲解(Bilibili):博主个人介绍 📘 《Yocto项目实战教程》京东购买链接:Yocto项目实战教程 哈希(Hash)算法与系统安全:从概念到实战的完整指南 读完目标: 你能清晰区分:哈希 vs 加密 vs 编码 vs 校验和 你能说清哈希的核心性质与“安全性三件套”(抗原像…