函数重载:在相同作用域中的多个函数,具有相同的名字而形参类型或者形参个数不同。(返回值并不会影响函数重载)
C++函数重载底层实现原理是C++利用那么name mangling(倾轧)技术,来该函数名,区分参数表不同的函数名。
编译器通过函数名和参数类型识别重载函数,为了保证类型的安全连接,编译器用参数个数和参数类型对每一个函数标识符进行专门编码,这个过程被称为 “名字改编” 或“名字修饰”,类型安全的连接使得程序能够调用合适的重载函数并保证了参数传递的一致性,编译器能够检测到并报告连接错误
gcc 编译
int func(int n){};
只编译并生成.o文件
gcc -c test.c -o test.o
查看编号
objdump -t test.o
g++编译
int func(int a){}
int func(float a, int b){}
float func(int a,double b){}
查看编号
objdump -t test.o
c++filt 名字改编转化成函数名