C++ C++;如何呼叫家长';朋友的功能?

C++ C++;如何呼叫家长';朋友的功能?,c++,inheritance,friend,C++,Inheritance,Friend,有一个基类和一个派生类。派生公共继承基。基类实现了一个友元函数bool operator==(constbase&lhs,constbase&rhs)const; 我正在实现派生类,它还需要实现bool操作符==(constderiver&lhs,constderiver&rhs)const;现在我的问题是,我不知道如何在我的操作符==函数中调用父操作符==函数。基类的运算符==不属于Base,因此我不能简单地使用Base::operator==。谢谢。将引用绑定到基子对象,并将它们与常规运算符

有一个基类和一个派生类。派生公共继承基。基类实现了一个友元函数bool operator==(constbase&lhs,constbase&rhs)const;
我正在实现派生类,它还需要实现bool操作符==(constderiver&lhs,constderiver&rhs)const;现在我的问题是,我不知道如何在我的操作符==函数中调用父操作符==函数。基类的运算符==不属于Base,因此我不能简单地使用Base::operator==。谢谢。

将引用绑定到
子对象,并将它们与常规运算符语法进行比较。例如:

class Base { /*...*/ };

bool operator==(const Base&, const Base&);

class Derive : public Base
{
    friend bool operator==(const Derive&, const Derive&);
private:
    int mem_;
};

bool operator==(const Derive& d1, const Derive& d2)
{
    return static_cast<const Base&>(d1) == static_cast<const Base&>(d2)
           && d1.mem_ == d2.mem_;
}
类基类{/*…*/};
布尔运算符==(常数基和,常数基和);
类派生:公共基
{
friend bool运算符==(常量派生和,常量派生和);
私人:
国际货币基金组织;
};
布尔运算符==(常量派生和d1,常量派生和d2)
{
返回静态强制转换(d1)=静态强制转换(d2)
&&d1.mem ==d2.mem;
}

警告:如果您不小心将
派生
进行比较,这样的设置将自动切片。如果基类必须是可比较的,那么设置一个虚拟的比较机制可能是值得的。

如果你发布一些(伪)代码,而不是试图描述你的代码,你的问题可能会更清楚。此外,如果你有一个免费的
操作符==()
,那么说“基类已经实现了它”就没有意义了。