加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

operator ==在C中使用双重调度

发布时间:2020-12-16 09:29:00 所属栏目:百科 来源:网络整理
导读:应该如何实施 operator==(const Base base) 比较子类s.t.调用时调用将被正确调度 Base* base1 = new Derived1();Base* base2 = new Derived2();base1-operator==(*base2)? 解决方法 将operator ==实现为独立功能. 让它在其中一个参数上调用虚方法(例如IsEqua
应该如何实施

operator==(const Base& base)

比较子类s.t.调用时调用将被正确调度

Base* base1 = new Derived1();
Base* base2 = new Derived2();
base1->operator==(*base2)?

解决方法

>将operator ==实现为独立功能.
>让它在其中一个参数上调用虚方法(例如IsEqual())

这让你达到了你的目标

Derived1::IsEqual(const Base& base)

调用.从这里你有一些选择

>使用RTTI来dynamic_cast<>基于Derived1
>如果派生的数量很小且有限,则可以实现

virtual bool Base::IsEqualToDerived(const Derived1& d) {return false};
virtual bool Base::IsEqualToDerived(const Derived2& d) {return false};

作为虚拟方法.在Derived1中,您覆盖并比较真实.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读