C++如何调用父母的好友功能?

发布于 2024-12-02 18:35:36 字数 294 浏览 1 评论 0原文

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

There is a Base class and a Derive class. Derive public inherit Base. The base class has implemented a friend function bool operator==(const Base& lhs,const Base& rhs) const;
I am implementing the Derive class, which also need to implement bool operator==(const Derive& lhs, const Derive& rhs) const; Now my problem is that I do not know how to call the parents's operator== function in my operator== function. The operator== for Base class dose not belong to base, so i cannot simply use Base::operator==. Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉月流沐 2024-12-09 18:35:36

将引用绑定到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 进行比较,这样的设置将会默默地进行切片。如果基类必须具有可比性,那么可能值得建立一个虚拟比较机制。

Bind references to the Base subobjects, and compare them with normal operator syntax. An example:

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_;
}

Warning: A setup like this will silently slice if you accidentally compare a Base to a Derive. If the base class must be comparable, it might be worth setting up a virtual comparison mechanism.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文