浅析C++函数重载

news2024/11/18 15:31:59

浅析C++函数重载

C语言和C++函数调用的不同

C语言会进行报错

image-20240703212948304

C++能成功运行并且自动识别类型

image-20240703213132730

由此可以看出,C++在函数调用时进行了调整,使其支持函数重载,那么我们就来看看进行了哪些调整吧😎

分析函数调用

首先我们要知道,C和C++的执行都需要经过四个阶段

预处理:头文件展开 宏替换 去除注释 条件编译(ifdef ifndef)

编译:检查语法 生成汇编代码(此时为指令级代码)

汇编:将汇编代码转为计算机能够读懂的二进制机器码

链接:合并链接,生成可执行程序

我们将目光放到编译阶段,首先看C的汇编代码

发现汇编代码中,是用到call指令去寻找Func函数的地址

image-20240703214114608

再通过报错提醒发现函数名就是原函数名

image-20240703215641984

再来看C++的汇编代码,两个Func函数的地址并不相同

image-20240703215850594

通过报错提醒,发现C++的函数名是被修饰过的,并且由最后两个字符进行类型区分

image-20240703220319927

结论

C++引用了函数名修饰,对相同函数名进行了区别,因此可以创建不同的栈区,在编译阶段中call指令就能够找到不同的函数地址,从而继续执行接下来的指令。而C语言中没有对函数名区分,则无法进行重载操作😭

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

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

相关文章

Mysql8.0.36 Centos8环境安装

下载安装包 官网地址:MySQL :: Download MySQL Community Server (Archived Versions) 可以直接下载后再传到服务器,也可以在服务器采用wget下载。如下: wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.36-linux-glib…

LLM应用:传统NLP任务

LLM出来以后,知乎上就出现了“传统NLP已死”的言论,但是传统NLP真的就被扔进历史的垃圾桶了吗? 其实,尽管LLM具有出色的通用能力,但仍然无法有效应对低资源领域的自然语言处理任务,如小语种翻译。为了更好地…

企业LoRA模型定制服务

🌈 最强AI绘画模型训练、定制服务公司出炉 —— 触站AI,设计界的智能魔法师 🧙‍♂️ 🎨 触站AI,用智能技术解锁设计的无限可能 🎨在创意与科技交织的今天,触站AI以其AI绘画模型训练和定制服务…

「算法题」二分查找算法演示

一个样式更加美观大方的HTML页面示例,其中包括了二分查找算法的演示。 布局描述 页面主体使用白色背景,加上轻微的阴影和圆角边框,使页面看起来更加精致。输入框和按钮使用了更加现代的样式,包括圆角边框和悬浮效果。按钮使用了鲜明的颜色,以吸引用户点击。搜索结果显示时…

指定IP地址通过远程桌面访问WINDOWS10

1:登录Windows10系统,在控制面板找到系统和安全,打开Windows Defender防火墙。 2:点击感觉设置。 3:在入站规则中,找到远程桌面。查看自己的网络现在是公用,域,还是专用。选择对应的网络。 4&am…

魔行观察-AI数据分析-蜜雪冰城

摘要 本报告旨在评估蜜雪冰城品牌作为投资对象的潜力和价值,基于其经营模式、门店分布、人均消费、覆盖省份等关键指标进行分析。 数据数据源:魔行观察:http://www.wmomo.com/#/brand/brandDetails?code10013603 品牌概览 蜜雪冰城是中国…

idea一些bug

今天再弄idea项目,遇到了好多bug,崩溃了,赶紧来记录一下 这里写目录标题 1、git管理2、maven管理2.1 导入新项目,报错 java: JDK isn‘t specified for module 3、idea SVN报错 1、git管理 如果我们在本地写了一个项目&#xff…

MySQL8.0版本的安装、配置

MySQL8.0 版本的安装 第一步、选择“Custorm”(自定义安装),然后“Next”(下一步)。 第二步、展开“MySQL Server”,单击“MySQL Server 8.0.37 - x64”,点击绿色右键头导入,其中产品安装路径是默认的,最后“Next”(下一步)。 如果需要自定义…

OA系统多少钱一套 用低代码开发OA系统需要多少钱

在数字化时代,企业对办公自动化(OA)系统的需求日益增长,以提高工作效率和优化管理流程。低代码开发平台以其快速开发和部署的能力,成为构建OA系统的热门选择。本文将介绍低代码开发OA系统的成本效益,并以白码低代码平台为例&#…

8.x86游戏实战-OD详解

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:7.x86游戏实战-C实现跨进程读写-跨进程写内存 工具下载:下载 OllyI…

机器人控制系列教程之Delta机器人轨迹规划

并联机器人轨迹规划原理 轨迹规划:并联机器人的轨迹规划相比于串联机器人更加严苛,因为在大多数工作场合都有高速、高精度、轻载的特征。其一般运动轨迹为 Point-To-Point,对这始末两点的轨迹规划在 Delta 机器人乃至所有机器人领域具有重要…

【干货】SaaS企业使用PLG模式实现用户自增长与留存的三大战略

近年来越来越多toB厂商开始采用SaaS模式,消费者的体验需求和购买行为也逐渐转变。根据Forrester研究调查显示,B端购买者现在越来越倾向于进行产品体验和产品调研与评估,而非如传统的方式那样直接与销售人员接触。 因此,SaaS&…

Halcon 基于分水岭的目标分割

一 分水岭 1 分水岭介绍 传统的分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是地质学上的拓扑地貌,图像中每一像素的灰度值表示该点的海拔高度,每一个局部极小值及其周边区域称为集水盆地&…

视频汇聚/安防监控/GB28181国标EasyCVR视频综合管理平台出现串流的原因排查及解决

安防视频监控系统/视频汇聚EasyCVR视频综合管理平台,采用了开放式的网络结构,能在复杂的网络环境中(专网、局域网、广域网、VPN、公网等)将前端海量的设备进行统一集中接入与视频汇聚管理,视频汇聚EasyCVR平台支持设备…

【基于R语言群体遗传学】-5-扩展到两个以上等位基因及多基因位点

我们现在继续对于群体遗传学进行统计建模,书接上回,我们讨论了孤雌生殖的物种违反哈代温伯格遗传比例的例子,那我们现在来看多于两个等位基因的情况的计算。 如果没有看过之前文章的同学,可以先去看一下之前的文章: …

数据库day1

MySQL的安装: 采用MySQL的zip格式安装

在C++中,工厂模式的思考(《C++20设计模式》及常规设计模式对比)

文章目录 一、前言二、讲解1、构造函数的弊端2、工厂方法(解决上述弊端)3、简单工厂3.1 **UML类图**3.2 **实现** 4、工厂模式4.1 **UML类图**4.2 **实现** 5、抽象工厂5.1 **UML类图**5.2 **实现** 三、总结 一、前言 在看《C20设计模式》一书中产生了…

Element 的 el-table 表格实现单元格合并

html 部分 <template><div class"index-wapper"><el-table :data"tableData" :span-method"objectSpanMethod" border><el-table-column v-for"(item, index) in tableHeader" :key"index" :prop&quo…

Qt Creator配置以及使用Git

Qt Creator配置以及使用Git 引言一、Qt Creator配置git二、Qt Creator使用git2.1 创建git仓库 or git项目导入Qt2.2 配置远端&#xff0c;拉代码 or 上传代码2.3 查看更改2.4 更多细节可参考官方文档 三、参考的博客以及文档 引言 Qt Creator配置Git之后&#xff0c;可以看作是…

严蔚敏数据结构(C语言版)吴伟民宁编著清华大学计算机系列教材+题集+配套题库+笔记+习题PDF电子版

今天分享的是 严蔚敏数据结构&#xff08;C语言版&#xff09;题集配套题库笔记习题PDF电子版 注&#xff1a;本资源搜集于网络&#xff0c;仅供学习交流&#xff0c;严禁用于商业用途 内容简介&#xff1a; “数据结构”是计算机程序设计的重要理论技术基础&#xff0c;它…