首页 > 代码库 > 为什么C不支持重载,而C++支持重载?
为什么C不支持重载,而C++支持重载?
C语言不支持重载,C++可以支持重载。这是什么原因呢?
在编译过程中需要将obj文件进行link,link负责将每一个obj中的符号查找表中的东西转换为一个地址,这个地址就是最后编译完成后的exe文件的函数对应这个函数的入口地址。
一个简单函数:
int Test();
按C语言方式的命名方式(_cdecl):_Test
按C++方式的命名(_stdcall) :?Test@@YAHXZ
? 和 @@YAH 是用来表示调用协议的, 其中的H为返回值是int
X表示没有参数。
Z是函数名称结束修饰
通过看在编译器转换成的函数名字就可以明白,为什么C++支持重载,因为C++是将参数加入进去的,而C则没有,所以不支持重载。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。