C语言不支持重载,C++可以支持重载。这是什么原因呢?
在编译过程中需要将obj文件进行link,link负责将每一个obj中的符号查找表中的东西转换为一个地址,这个地址就是最后编译完成后的exe文件的函数对应这个函数的入口地址。
一个简单函数:
int Test();
按C语言方式的命名方式(_cdecl):_Test
按C++方式的命名(_stdcall) :?Test@@YAHXZ
? 和 @@YAH 是用来表示调用协议的, 其中的H为返回值是int
X表示没有参数。
Z是函数名称结束修饰
通过看在编译器转换成的函数名字就可以明白,为什么C++支持重载,因为C++是将参数加入进去的,而C则没有,所以不支持重载。
为什么C不支持重载,而C++支持重载?,布布扣,bubuko.com
原文地址:http://www.cnblogs.com/wang-can/p/3810364.html