运行结果如下:
calcute triangle area
calcute circle area
calcute square area
可以看到,当分别传入Triangle ,Circle,Square类型时,分别调用了对应的函数。
为什么要重载
函数重载在一定程序上可以减轻程序员起名字的负担。最常见的一个例子就是构造函数的重载。
class Test
{
public:
Test(void); // 无参构造函数
Test(int a);//构造函数
Test(int a,int b);//两个整型参数的构造函数
};
可以看到,类Test的三个构造函数名都为Test。如果没有重载,要实现三个构造函数就可能需要三个不同的构造函数名区分,这也就增加了类的使用者的负担,使用者需要传入不同参数构造对象时,就需要使用不同的构造函数名称。而有函数重载之后,类的使用者可以使用同一个函数名传入不同的参数即可。
当然了,如果单纯地为了减轻起名字的负担而去使用函数重载,而使得函数失去了本来的信息,则是一个不明智的选择。我们可以为那些操作确实极其相似的函数进行重载。
不能重载的情况
以下几种情况下,是不能重载或者说是非法的。
main函数不能重载
这是在C++ 11标准中说明的:










