重载:相同作用域中,函数名相同,参数不同,则称之为重载(又称函数静态多态性)
重载的几种形式:1.参数的数量不同:void(int a) void(int a,int b)
2.参数的类型不同:void(int a) void(double a)
3.参数的顺序不同:void(int a,int b) void(int b,int a)
4.参数的数量与类型均不同:void(int a) void(double a,double b)
调用参数时,编译器通过参数数量,类型以及顺序的不同来确定相应的函数
注:合法的重载:int abs(int i)
long abs(long i)
double abs(double i)
非法的重载:int abs(int i)
long abs(int i)
double abs(int i)
函数名相同,参数类型与数量均相同,则为非法重载,编译器会报告“语法错误”
注:在重载时,编译器会自动给每一个重载的函数后面加一个后缀即起一个新的名字来记录函数,即为名字改编(name managling)
C中不存在重载,因此为了使的C与C++的混合编程,则使用extern “C”来取消重载,使的函数无法重载,若发生重载,编译器会报告错误
extern “C” 返回类型 函数名()
若使用的函数特别多的情况下,为了防止代码过于累赘,则采用在头文件中使用#ifdef _cpluscplus以及#endef来进行所有函数的取消重载
#ifdef _cplusplus
extern “C”
{
#endif
函数
函数
......
#ifdef _cplusplus
}
#endif