cpp overload - ShenYj/ShenYj.github.io GitHub Wiki
C语言
是不支持函数重载的
因为
C语言
这个特性,C 语言
函数对应的符号有固定格式, 所以在Swift
中能够通过 @_silgen_name 的方式来实现C 函数
的直接调用
作为 C 语言的
超集, C++
支持函数重载
本质:
采用了
name mangling
或者叫name decoration
技术, C++ 编译器默认会对符号名 (比如函数名) 进行改编、 修饰, 保证其符号唯一并且不会重复产生冲突,并且不同的编译器有不同的规则 而C 语言
并没有采用这种技术
函数重载:两个函数的函数名完全一样, 但是参数个数、类型、顺序不同, 都构成重载
注意: 返回值类型与函数重载无关、实参的隐式类型转换可能会产生二义性
#include <iostream>
using namespace std;
int sum(int v1, int v2) {
return v1 + v2
}
int sum(int v1, int v2, int v3) {
return v1 + v2 + v3
}
int main() {
cout << sum(10, 20) << endl;
cout << sum(10, 20, 30) << endl;
getchar();
return 0;
}
#include <iostream>
using namespace std;
void func(int v1, double v2) {
cout << "func(int v1, double v2)" << endl;
}
void func(double v1, int v2) {
cout << "func(double v1, int v2)" << endl;
}