内容参考于《21天学通C++》(第八版)
六.函数重载
1. 示例
#include <iostream>
using namespace std;
const double Pi = 3.14159265;
double Area(double radius); // for circle
double Area(double radius, double height); // for cylinder
int main()
{
cout << "Enter z for Cylinder, c for Circle: ";
char userSelection = 'z';
cin >> userSelection;
cout << "Enter radius: ";
double radius = 0;
cin >> radius;
if (userSelection == 'z')
{
cout << "Enter height: ";
double height = 0;
cin >> height;
// Invoke overloaded variant of Area for Cyclinder
cout << "Area of cylinder is: " << Area(radius, height) << endl;
}
else
cout << "Area of cylinder is: " << Area(radius) << endl;
return 0;
}
// for circle
double Area(double radius)
{
return Pi * radius * radius;
}
// overloaded for cylinder
double Area(double radius, double height)
{
// reuse the area of circle
return 2 * Area(radius) + 2 * Pi * radius * height;
}
2. 作用
名称相同,但参数不同的函数被称为重载函数。
那么,下面的代码是编译不通过的,因为名称相同,参数相同。
int max(int a, int b)
{
return a >= b ? a : b;
}
bool max(int a, int b)
{
return a >= b ? true : false;
}
下面代码是编译通过的
int max(int a, int b)
{
return a >= b ? a : b;
}
bool max(int a)
{
return a >= 20 ? true : false;
}