为什么C++支持函数重载而C语言却不支持?
1.函数重载的概念
如果你接触过C++,那么一定使用过插入运算符"<<“和提取运算符”>>"吧。这俩个运算符是C和C++位运算符中的左移运算符和右移运算符,而C++又把它作为输入输出运算符。允许一个运算符可以用于不同场合,不同的场合就有不同的含义,这就叫做运算符的 “重载”,即重新赋予它新的含义。这其实就是 “一物多用”。
在C++中,函数也可以重载。C++允许在同一作用域中用同一函数名定义多个函数,这些函数的参数列表不同,这些同名的函数用来实现不同的功能。这就是函数的重载,即一个函数名多用。
实例:分别求俩个int,double及long类型的数据之和。
#include <iostream>
using namespace std;
int Add(int x, int y)
{
return x + y;
}
double Add(double x, double y)
{
return x + y;
}
long Add(long x, long y)
{
return x + y;
}
int main()
{
int ret1 = Add(1, 2);
double ret2 = Add(1.23, 2.34);
long ret3 = Add(10L, 20L);
cout << "int: " << ret1 << endl;
cout << "double: " << ret2 << endl;
cout << "long: " << ret3 << endl;
return 0;
}
main函数三次调用Add函数,但每次实参的类型不同。系统会根据实参的类型找到与之匹配的函数,然后调用该函数。
注意: 上述情况只是函数参数列表不同的其中一种表现,函数参数列表不同,总共包括如下三种种情况
- 参数的个数不同
- 参数的类型相同
- 参数的次序不同
函数的函数名相同,函数的参数列表满足以上三种情况中的一种或多种,都可以构成函数的重载。<