gpt4 book ai didi

C++如何调用父类的友元函数?

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:12 25 4
gpt4 key购买 nike

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

最佳答案

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

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 进行比较,这样的设置将自动切片。如果基类必须是可比较的,那么可能值得建立一个虚拟比较机制。

关于C++如何调用父类的友元函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7264679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com