从父类调用基类重载操作符

Call base class overloaded operator from parent class

本文关键字:重载 操作符 基类 调用 父类      更新时间:2023-10-16

在下面的简单结构体中,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部分替换为从父类调用重载操作符?

在派生的结构体

中使用::作用域操作符

operator==()结构体中p3是这样的

bool operator==(const p3& b) const {
    return p2::operator==(b) && z == b.z;
}
bool operator==(const p3& b) const
{
    return p2::operator==(b) && z == b.z; 
    //     ~~~~~~~~~~~~~~~~^
}