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中,您覆盖并比较真实. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |