函数重载overloaded

上篇简单介绍了一下函数重载(overloaded)部分,这篇将写个实例来说一下函数重载(overloaded)。

函数重载(overloaded),简单讲就是函数名一样,其它地方不一样(返回类型或参数)。重载可以让同样功能,不同类型的函数有同样的名字。在编程时应该都会有这种苦,就是想函数名如何取。用重载可以减少这种取名代来的痛苦。

函数重载(overloaded)例:

函数重载(overloaded)输出结果:

函数重载是如何实现的?名字重组(name mangling)

因为在计算机内部函数都是独立的名字,没有重载。那一定又是编译器帮我们实现的。一般编译器在编译时,会重新为函数取名,将函数返回类型,参数都加入到函数名中,这样就得到了一个新函数,不重名函数。

以上代码只是举例,其时函数编译后不一定是这样,每家编译器厂商会有自己的重命名方式来实现重载。这点程序员并不用太关心,编译器会很好的实现重命名。

刚好引入另一个内容:extern “C”

上面哪段定义大家一定在引用别人的头文件时看见过。特别是在C++和C两个语言混合编程时。这里讲下为什么要有extern “C”。

C语言是没有函数重载特性的语言。

C++语言是有函数重载特性的语言,重载函数实现方式是将函数名进行重组。

将函数定义在extern “C”{}内,就是明确告诉编译器,用C语言方式编译这些函数。