C++怎样实现函数重载

C++怎样实现函数重载


C++函数重载是指:C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须不同,常用来处理实现功能类似数据类型不同的问题,如下程序就是对不同类型的数据的加法函数的重载。

#include<iostream>
using namespace std;

int Add(int x, int y)
{
	return x + y;
}

double Add(double x, double y)
{
	return x + y;
}

int main()
{
	Add(3, 4);
	Add(3.5, 4.7);
	return 0;
}

那么我们可能会问C++支持函数重载,为什么C语言不支持函数重载呢,是因为C++有其特有的函数名字修饰的方法。
首先一个程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接。(参考C语言编译和链接)
预处理一般指:消除注释、宏替换、条件编译、头文件展开等一些操作。
编译:值将C程序转化为汇编语言、以及检查语法、语义是否正确,最后对写函数进行符号汇总。
汇编:将汇编语言转化为二进制的机器语言对每个源文件生成符号表。
链接:是通过链接器使生成的符号表合并,并且重新定位。

而C++支持函数重载使在汇编到链接这一步中的函数名修饰的规则不同,如下图所示C语言中函数名经过修饰后函数名不变(Linux环境下),而当我们在定义多个相同函数时,程序在链接时就不知到链接哪一个函数,因此C语言不支持函数重载。而相比于C++而言函数经过函数名规则修饰后会根据不同的函数参数类型。以及个数、顺序的不同而生成不同的函数名,因此在链接时可以根据输入的不同函数类型的函数定位到正确的函数,因此C++是根据改进函数名修饰规则后支持函数重载。
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值