但在C++中,允许多个函数拥有相同的名字,只要它们的参数列表不同就可以,这就是函数的重载
需满足 函数参数 : 个数不同 / 参数类型不同,参数顺序不同 才能构成重载 。
//C语言不支持函数重载 下面写法是错误的
extern"C"{
intsum (inta, intb ) {
returna + b;
}
intsum (inta,intb ,intc ) {
returna + b + b ;
}
}
//参数个数不同 构成函数重载
void test (int a ,int b ){
}
void test (int a) {
}
//参数类型不同 构成函数重载
void test (int a) {
}
void test (float a) {
}
//参数顺序不同,同一方法参数类型不同,构成重载
void test1 (float a ,int b ) {
}
void test1 (int b , float a ) {
}
//参数顺序不同,同一方法参数类型相同,无法构成重载 报错:重复定义
void test2 (int a ,int b ) {
}
void test2 (int b , int a ) {
}
//返回值类型无法构成重载 报错:重复定义
void test3 (int a ,int b ) {
}
int test3 (int a ,int b ) {
return a ;
}
注意: 隐式类型转换会造成二义性 。
void a (long a) {
}
void a (float a) {
}
//直接调用 a(10)会报错“Call to 'a' is ambiguous” 调用不确定的方法 “a”
int main () {
a(10);
}
来源:https://www.cnblogs.com/jdxiao/p/10018641.html