从父 class 调用基 class 重载运算符
Call base class overloaded operator from parent class
在下面的简单结构中,p3继承自p2。
struct p2 {
double x, y;
p2(double x, double y) : x(x),y(y){}
bool operator ==(const p2& b) const{ return x == b.x && y == b.y; }
bool operator !=(const p2& b) const{ return !(*this == b); }
};
struct p3 : p2 {
double z;
p3(double x, double y, double z) : p2(x,y),z(z){}
bool operator ==(const p3& b) const{ return x == b.x && y == b.y && z == b.z; }
bool operator !=(const p3& b) const{ return !(*this == b); }
};
在 p3 的重载比较运算符中,如何用父 class 对重载运算符的调用替换 x == b.x && y == b.y
部分?
bool operator==(const p3& b) const
{
return p2::operator==(b) && z == b.z;
// ~~~~~~~~~~~~~~~~^
}
只需在派生结构中使用作用域运算符::
所以在结构 p3
中的 operator==()
看起来像这样:
bool operator==(const p3& b) const {
return p2::operator==(b) && z == b.z;
}
在下面的简单结构中,p3继承自p2。
struct p2 {
double x, y;
p2(double x, double y) : x(x),y(y){}
bool operator ==(const p2& b) const{ return x == b.x && y == b.y; }
bool operator !=(const p2& b) const{ return !(*this == b); }
};
struct p3 : p2 {
double z;
p3(double x, double y, double z) : p2(x,y),z(z){}
bool operator ==(const p3& b) const{ return x == b.x && y == b.y && z == b.z; }
bool operator !=(const p3& b) const{ return !(*this == b); }
};
在 p3 的重载比较运算符中,如何用父 class 对重载运算符的调用替换 x == b.x && y == b.y
部分?
bool operator==(const p3& b) const
{
return p2::operator==(b) && z == b.z;
// ~~~~~~~~~~~~~~~~^
}
只需在派生结构中使用作用域运算符::
所以在结构 p3
中的 operator==()
看起来像这样:
bool operator==(const p3& b) const {
return p2::operator==(b) && z == b.z;
}