关于继承:C ++如何调用parent的friend函数?

C++ how to call parent's friend function?

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


将引用绑定到Base子对象,并将其与普通运算符语法进行比较。一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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_;
}

警告:如果不小心将BaseDerive进行比较,这样的设置将静默切片。如果基类必须是可比较的,那么建立一个虚拟比较机制可能是值得的。