浅析C++函数重载

浅析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.mzph.cn/bicheng/39987.shtml

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

相关文章

SQL中常用的内置函数

SQL中常用的内置函数 在SQL(结构化查询语言)中,有许多内置函数可用于各种数据操作和计算。以下是SQL中常用的函数。 一.字符串操作、数值计算、日期处理 COUNT(): 统计行数。 SELECT COUNT(*) FROM employees;SUM(): 计算数值列的总和。 S…

2024企业数据资产化及数据资产入表方案梳理

01 数据资产入表:是一个将组织的各类数据资产进行登记、分类、评估和管理的流程。 数据资产包括:客户信息、交易记录、产品数据、财务数据等。 做个比喻吧:数据资产入表就像是给公司的数据资产做“人口普查”—— ①找出公司有哪些数据找…

macos m2 百度paddleocr文字识别 python

创建了一个虚拟环境:conda create -n orc python3.11.7 进入虚拟环境后执行2条命令 pip install paddleocr -i https://pypi.tuna.tsinghua.edu.cn/simple pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple​ ​ 安装好后,在网…

204.贪心算法:分发饼干(力扣)

以下来源于代码随想录 class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {// 对孩子的胃口进行排序sort(g.begin(), g.end());// 对饼干的尺寸进行排序sort(s.begin(), s.end());int index s.size() - 1; // 从最大的饼…

Java使用分布式锁来做数据库事务控制

步骤如下&#xff1a; 1&#xff09;选择合适的分布式锁实现&#xff1a;常见的分布式锁实现包括ZooKeeper、Redis和基于数据库等。根据具体情况选择最佳方案。 2&#xff09;获取分布式锁&#xff1a;在需要进行操作时&#xff0c;首先尝试获取分布式锁。如果成功获取到&#…

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

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

ArcTs布局入门04——相对布局 媒体查询

如果你也对鸿蒙开发感兴趣&#xff0c;加入“Harmony自习室”吧 扫描下面的二维码关注公众号。 本文将探讨相对布局与媒体查询&#xff0c;为啥把他们放到一起呢&#xff1f;主要是因为相对布局在响应式的场景下做得不太好&#xff0c;一般情况下和媒体查询&#xff08;不同尺…

MySQL之备份与恢复(二)

备份与恢复 定义恢复需求 如果一切正常&#xff0c;那么永远也不需要考虑恢复。但是&#xff0c;一旦需要恢复&#xff0c;只有世界上最好的备份系统是没用的&#xff0c;还需要一个强大的恢复系统。 不幸的是&#xff0c;让备份系统平滑工作比构造良好的恢复过程和工具更容易…

OCR是什么,主要应用和未来发展趋势

OCR&#xff0c;即光学字符识别&#xff08;Optical Character Recognition&#xff09;&#xff0c;是一种能够将图像文件中的文字资料转化为电子文本的技术。它广泛应用于数字化文档管理、自动化数据录入、智能识别等多个领域&#xff0c;涉及的主要技术包括图像预处理、特征…

【NBU大三下期末考试实录】

软件测试 任课老师&#xff1a;WXH&#xff0c;形式&#xff1a;开卷&#xff08;中文试卷&#xff0c;可携带中文书籍&#xff09; 复习建议&#xff1a;由于是开卷考&#xff0c;不需要过早复习&#xff0c;建议考前照着上课的PPT复习&#xff0c;大致有个概念即可&#xff…

WebRtc实现1V1音视频通话

WebRtc实现1V1音视频通话 简介应用场景共享桌面的基本原理传统共享桌面WebRTC 共享桌面 相关API基本使用调用本地摄像头播放约束设置 媒体协商过程协议协议的交换与传输 WebRTC 通信过程ICE Candidate&#xff08;ICE 候选者&#xff09; 1V1视频通话 简介 WebRTC&#xff0c;名…

新版本发布丨昂辉科技EasySAR-Configurator V1.2.0再启航

昂辉科技新一代跨平台高性能AUTOSAR配置工具EasySAR-Configurator V1.2.0全新版本重磅发布&#xff01;产品基于Web架构前后端分离的方式开发&#xff0c;可提供SaaS部署&#xff0c;能够实现精准配置和最大限度的代码裁剪&#xff0c;且配备标准的约束限制、配置验证、代码生成…

thinkphp6 亚马逊S3存储

在ThinkPHP6中使用亚马逊S3作为存储需要使用一个适合的库来与S3接口交互。这里我们可以使用league/flysystem-aws-s3-v3库来实现 composer require league/flysystem-aws-s3-v3 aws/aws-sdk-php然后&#xff0c;在ThinkPHP6中配置S3存储驱动。在config目录下创建一个新的配置…

jenkins 发布服务到linux服务器

1.环境准备 1.1 需要一台已经部署了jenkins的服务器&#xff0c;上面已经集成好了&#xff0c;jdk、maven、nodejs、git等基础的服务。 1.2 需要安装插件 pusblish over ssh 1.3 准备一台额外的linux服务器&#xff0c;安装好jdk 2.流程描述 2.1 配置jenkins&#xff0c;包括p…

java函数式接口的使用-自定义函数接口@FunctionalInterface消除if else和内置4大函数式接口

1.自定义函数接口FunctionalInterface消除if else FunctionalInterface public interface MyFunction<T, R> {R apply(T... t); }import com.google.common.collect.Maps;import java.util.Map;/*** 自定义函数消除if else*/ public class MyFunctionTest {//(自定义)一…

ubuntu系统下如何安装python

在Ubuntu系统下安装Python&#xff0c;有多种方法可供选择。以下是两种常见的方法&#xff1a; 一、使用apt包管理器安装 安装步骤如下&#xff1a; 首先更新软件包列表 sudo apt update安装Python 3&#xff1a; 输入以下命令以安装Python 3&#xff08;Ubuntu的默认Pyth…

如何将 Apifox 的自动化测试与 Jenkins 集成?

CI/CD &#xff08;持续集成/持续交付&#xff09; 在 API 测试 中的主要目的是为了自动化 API 的验证流程&#xff0c;确保 API 发布到生产环境前的可用性。通过持续集成&#xff0c;我们可以在 API 定义变更时自动执行功能测试&#xff0c;以及时发现潜在问题。 Apifox 支持…

二叉树的最近公共祖先-二叉树

236. 二叉树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; ​ 递归 lson、rson左右子树&#xff1b; 深度优先遍历&#xff0c;遍历到p或者q就返回ture&#xff1b; class Solution { public:TreeNode* ans;bool dfs(TreeNode* root, TreeNode* p, TreeNode* q){i…

墨烯的C语言技术栈-C语言基础-004

三.变量,常量 生活中有些值是不变的 有些值是可变的 // 变量和常量功能 // 变量分为 局部变量 和 全局变量 int b 20; 全局变量 int main() { short age 20; // 年龄 局部变量 int high 180; // 身高 局部变量 float weight 88.5 // 体重 局部变量 return 0;…

GoLand 2024 for Mac GO语言集成开发工具环境

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff08;适合自己的M芯片版或Intel芯片版&#xff09;&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功3、打开访达&#xff0c;点击【文…