当前位置: 首页 > news >正文

C++中函数重载的原理

C++的编译器在编译函数时,会对函数进行换名,将参数的类型信息整合到新的名字中,解决函数重载和名字冲突的矛盾。

在C++标准语法规定,在编译C++函数时候,会进行换名,将函数的参数表类型信息整合到新的名字中,因为满足多个重载函数的多个函数参数有所差异,这样在换名字之后他所得到的新的名字也是有所差异的,通过这样的语法规则,来解决函数重载和名字冲突的矛盾

//test.c
void func(int i,double d){}/*现在分别使用C编
译器和C++编译器来
编译test.c源文件,
查看二者差异。*/gcc -C test.c -o 1.og++ -C test.C -o 2.onm//可以查看一个目标文件中的一些标识符nm 1.o00000000 T func//gcc 编译后目标文件中的函数名字并没有改变nm 2.000000000 T _Z4funcid/*经过C++编译器g++编译后的源文件中的函数名字被改变了,变为了“_Z4funcid”,其中"_Z"是编译器的内置标识,并没有什么具体的含义,我们可以忽略它,“4”表示的应该是函数名字的长度(func正好是4个字符),"i"表示int,"d"表示double.因为此时源文件test.c中的函数func(int i,double d)的参数是一个int类型和一个double类型。换名就是

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vscode go开发环境
  • 硬盘的照片不小心删除怎么恢复 移动硬盘删除图片怎么恢复 数据恢复软件哪个好用
  • Apache Druid日志实时分析
  • 封装_私有类字段和方法
  • OpenCV绘图函数(6)绘制椭圆函数ellipse()的使用
  • 【C++设计模式】(三)创建型模式:单例模式
  • 构建智能化Web应用防火墙与自动化攻击测试系统
  • 医院建筑的电气设计——保障医疗质量与安全的坚固基石
  • 点餐API接口对接的过程中需要注意哪些问题
  • 数据结构与算法---排序算法
  • 使用统计方法在AMD GPU上使用JAX Profiler可靠地比较大型生成AI模型中的算法性能
  • 详解PyTorch中的`remove_self_loops`函数及其在图神经网络中的应用
  • 白手起家的七个逆向思维
  • 软件测试 | 测试用例
  • SpringCloud Alibaba】(十三)学习 RocketMQ 消息队列
  • C语言笔记(第一章:C语言编程)
  • Git的一些常用操作
  • learning koa2.x
  • Node + FFmpeg 实现Canvas动画导出视频
  • react-native 安卓真机环境搭建
  • Spring Cloud中负载均衡器概览
  • tensorflow学习笔记3——MNIST应用篇
  • 阿里云应用高可用服务公测发布
  • 大型网站性能监测、分析与优化常见问题QA
  • 微信公众号开发小记——5.python微信红包
  • 由插件封装引出的一丢丢思考
  • 智能网联汽车信息安全
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 你对linux中grep命令知道多少?
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​批处理文件中的errorlevel用法
  • # SpringBoot 如何让指定的Bean先加载
  • #《AI中文版》V3 第 1 章 概述
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #大学#套接字
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • $forceUpdate()函数
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (0)Nginx 功能特性
  • (13)DroneCAN 适配器节点(一)
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (转)memcache、redis缓存
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)大型网站架构演变和知识体系
  • .NET C# 配置 Options
  • .net 托管代码与非托管代码
  • .NET性能优化(文摘)
  • .sdf和.msp文件读取
  • 。Net下Windows服务程序开发疑惑
  • ?.的用法
  • @RequestBody与@RequestParam