什么是函数重载?
在同一个作用域中,函数名相同,参数表不同的函数,构成重载关系。
重载与函数的返回类型无关,与参数名也无关,而只与参数的个数、类型和顺序有关。
重载解析
根据调用函数时所提供的实参,按照类型匹配的原则,找到相应的重载版本的过程叫做重载解析。
C++中的换名机制
C++编译器在编译C++函数时,会根据该函数的参数表对其名称进行替换,因此同一个作用域中参数表不同的同名函数,在编译成二进制目标模块以后,其函数名是不同的。
通过extern “C”关键字可以要求C++编译器按照C语言的方式生成函数接口,即不换名。
extern “C” void foo (int x, int y) { … }
extern “C” {
void foo (int x, int y) { … }
void bar (float x, double y) { … }
…
}
所以,被extern “C”修饰的函数不能实现重载。