函数重载
在同一个作用域内,函数名字相同,参数(个数,顺序,类型)不同,那么就是函数重载
void fun(){cout<<"没有参数";
}
void fun(int a){ cout<<"int";
}
void fun(int a,float b){ cout<<"int float";
}
函数重载和返回值没关系
int fun(){cout<<"wu";
}
void fun(){ //俩函数没有构成重载cout<<"wu";
}
函数重载的实现原理是什么?
编译器通过函数的参数类型、参数个数、参数顺序来区分不同的重载函数,在编译过程中,编译器会根据调用函数的实参类型选择合适的重载函数进行调用
为什么c语言函数名字相同会报错?而c++可以重载?
因为c语言函数名字经过编译之后没有改变,而c++函数名字编译之后会掺杂参数类型
当函数重载和参数默认值一起使用时,要注意二义性问题
#include<iostream>
using namespace std;void fun(int a,int b=1);
void fun(int a);int main(){fun(0);//此时编译器不知道调用哪个函数return 0;}