函数重载
void dispaly(){
}
void dispaly(int a) {
}
void dispaly(long a) {
}
int dispaly(int a , double b) {
return 0;
}
特性
- 和参数类型有关
- 参数个数有关
- 函数名相同
- 和返回值无关
原理
C++编译器(MSVC,G++,GCC,LLVM,Clang...)对C++代码编译时会对函数及其参数或者参数名进行编码操作,运行时实际调用的是不同的函数名(类似于代码混淆),专有名词叫
name mangling
或者叫name decoration
,而C语言是不支持函数重载的,也是因为没有才有这样的技术
证明
release模式下运行Demo.使用IDA反编译查看编译结果