文章目录
- 1.概念
- 2. C++为什么支持函数重载?
1.概念
C++允许功能类似的同名函数出现,只要形参列表中的参数个数、类型、类型顺序不同,满足这三个条件中任意一个则构成函数重载,函数重载常用来处理实现功能类似数据类型不同的问题。
// 1.参数类型不同
int Add(int x, int y) {return x + y;
}double Add(double x, double y) {return x + y;
}// 2.参数个数不同
int Fun() {
}int Fun(int x) {
}// 3.参数类型顺序不同
void Test(int a, double b) {
}void Test(double a, int b) {
}
2. C++为什么支持函数重载?
C/C++程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接。在链接阶段,链接器会在汇编阶段产生的符号表中寻找函数的地址,然后将这个函数与其地址链接在一起,那么链接时链接器会使用什么函数名去找该函数的地址呢?
C++支持函数重载的关键在于,编译时拥有独特的函数名修饰规则,编译器不同规则就不同,比如Linux下g++编译器与Windows下的vs编译器的修饰规则就不同。vs编译器的修饰规则较为复杂,g++的修饰规则更清晰(根据函数参数信息修饰)。C语言编译器是没有函数名修饰规则的,同名函数没法区分。