1背景-不同类型的四舍五入-C和C++的实现
2 函数重载实现function overloading fulfillment
- The compiler will preform name lookup
- Argument-dependent lookup, also known as ADL.
- The return type will not be considered in name lookup.
That is to say, 相同的函数必须是函数名和参数列表都相同的函数。
3 实例讲解
#include <iostream>
using namespace std;
int sum(int x, int y)
{
cout << "sum(int, int) is called" << endl;
return x + y;
}
float sum(float x, float y)
{
cout << "sum(float, float) is called" << endl;
return x + y;
}
double sum(double x, double y)
{
cout << "sum(double, double) is called" << endl;
return x + y;
}
// //Is the following definition correct?
// double sum(int x, int y)
// {
// cout << "sum(int, int) is called" << endl;
// return x + y;
// }
int main()
{
cout << "sum = " << sum(1, 2) << endl;
cout << "sum = " << sum(1.1f, 2.2f) << endl;
cout << "sum = " << sum(1.1, 2.2) << endl;
//which function will be called?
cout << "sum = " << sum(1, 2.2) << endl;
return 0;
}
于老师课上讲的两个例子
- 一个是函数名相同,输入参数相同,返回参数不同,这个就是函数重定义,编译器报错。
- 另一个例子是当参数类型不同的时候,如果有多个函数,编译器会报错。但如果只有一个函数,不报错。
point
函数重载可以减轻程序员的记忆负担。