首页 > 代码库 > 为什么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则没有,所以不支持重载。