Sobrecarga de operadores en clase derivada
Debo redefinir todos los operadores de sobrecarga con tipo derivado si necesito usarlos en la clase derivada?
El siguiente código compila bien:
class Point {
public:
Point(int X = 0, int Y = 0):x(X), y(Y) {}
virtual ~Point() {}
Point operator +(Point &rhs) {
return Point(x + rhs.x, y + rhs.y);
}
protected:
int x, y;
};
class Vector : public Point {
public:
Vector(int X, int Y) : Point(X, Y) {}
~Vector() {}
Vector operator +(Vector &rhs) {
return Vector(x + rhs.x, y + rhs.y);
}
};
int main()
{
Vector v1(1, 2);
Vector v2(3, 2);
Vector v3 = v2 + v1;
}
Pero de lo que he leído,
C ++ Primer 4to Ed. Sección 15.5.3.
Si una clase derivada quiere que todas las versiones sobrecargadas estén disponibles a través de su tipo, debe redefinirlas todas o ninguna de ellas.
Hace la parte de la cita "none of them
"¿Tiene algún sentido aquí?