【发布时间】:2011-08-06 10:48:00
【问题描述】:
如果我需要在派生类中使用它们,我是否必须重新定义所有具有派生类型的重载运算符?
以下代码编译良好:
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;
}
但从我所读到的,
C++ Primer 4th Ed. 第 15.5.3 节。
如果派生类想要通过其类型使所有重载版本可用,那么它必须重新定义所有这些版本,或者一个都不重新定义。
引用“none of them”的部分在这里有意义吗?
【问题讨论】: