在以下简单结构中,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的重载比较运算符中,如何通过从父类调用重载运算符来替换x == b.x && y == b.y
部分?
答案 0 :(得分:1)
bool operator==(const p3& b) const
{
return p2::operator==(b) && z == b.z;
// ~~~~~~~~~~~~~~~~^
}
答案 1 :(得分:1)
只需在派生结构
中使用范围操作符::
所以在你的operator==()
结构p3
中看起来像这样:
bool operator==(const p3& b) const {
return p2::operator==(b) && z == b.z;
}