A program shall contain a global function called main, which is the designated start of the program....
This function shall not be overloaded.
试想如果作为用户程序入口函数的main函数被重载了,那么加载的时候该以哪个为入口呢?
只有返回值不同
例如下面两个声明只有返回值不同,函数名和形参都相同:
double calcArea(const Square&);
int calcArea(const Square&); //非法,仅有返回值不同,不可重载
/*以上声明同时出现会报错*/
试想一下,当你传入Square类型参数,而不去使用返回值时,应该调用上面的哪个函数呢?
形参列表看似不同,实则相同
例如使用typedef给Triangle起了一个“别名”:
typedef Triangle MyTri;
double calcArea(const Triangle&);
double calcArea(const MyTri&);
/*以上声明同时出现会报错*/
上面这种情况的形参看似不一样,本质上来说它们并没有什么不同。
形参名不同
例如:
double calcArea(const Circle &circle );//形参名为circle
double calcArea(const Circle& cir);//形参名为cir
double calcArea(const Circle& );//省略形参名
/*以上声明同时出现会报错*/










