1、一般来说,一个重写的函数必须与被他重写的函数具有相同的返回类型:
class Shape {
public:
//....
virtual double area( ) const = 0;
//...
};
class Circle : public Shape {
public:
float area( ) const; //错误,返回类型不同
//....
};
然而, 这个规则对于“协变返回类型”的情形来说显得不那么严格。
也就是说,如果B是一个类类型,并且一个基类虚函数返回B*,那