函数重载:在C++中,同一个作用域下,多个函数的函数名字相同,形参列表不同,称为函数重载,常用来处理功能类似而数据类型不同的问题。
1.参数类型不同构成函数重载
2.参数个数不同构成参数重载
3.参数类型顺序不同构成重载
注意:返回值类型不同不会构成函数重载
以下两个函数构成重载,但是调用会出现问题,无参调用存在歧义。
void Func()
{
cout << "Func()" << endl;
}
void Func(int x = 0)
{
cout << "Func(int x)" << endl;
}
C语言为什么不能实现函数重载?
底层原因是C语言和C++在编译链接阶段对函数名字的修饰规则不同。
C语言是直接通过函数名去查找,重载函数的函数名是相同的,所以存在歧义。
而C++对函数名字的修饰规则与参数有关,参数不同,修饰出来的名字就不一样,因此支持函数重载。
总结:
1.函数重载必须满足参数列表不同:参数个数不同/参数类型不同/类型顺序不同。
2.返回值类型不同不构成函数重载,因为C++对函数名的修饰规则与返回值无关。