这里形参的名字仅仅是起到说明或者记忆的作用,因此对于上面三个声明,它们的形参名可以随意起,但不会影响形参列表的内容。
仅有顶层const的差异
例如:
double calcArea(const Circle);//函数1
double calcArea(Circle);//重复声明了函数1
/*以上声明同时出现会报错*/
double calcArea(Circle* const);//函数2
double calcArea(Circle*);//重复声明了函数2
/*以上声明同时出现会报错*/
但需要特别注意的是,如果形参是指针或引用,是可以通过区分指向大到底是常量对象还是非常量对象来实现函数重载。例如下面的情况是可以实现函数重载的:
double calcArea(const Circle&);//作用于常量引用
double calcArea(Circle&);//
/*以上声明同时出现不会报错*/
double calcArea(const Circle*);//作用于常量指针
double calcArea(Circle*);
/*以上声明同时出现不会报错*/
总结
在定义了重载函数后,我们需要以合理的实参进行调用。大多数情况下,我们很容易判断传入的对应实参需要调用哪个函数,但是有些时候却并不那么容易。我们将会在后面的文章中看到如何进行函数匹配。
我们对前面的内容做一个总结:
- 函数重载能够减轻程序员命名的负担,但这不应该以丢失可读性为代价。
- main函数不能重载。
- 重载函数的形参在数量或者类型上要有不同。










