operator == C中的订单
发布时间:2020-12-16 09:59:47 所属栏目:百科 来源:网络整理
导读:在操作符订购时是否有任何不同?=? 我遇到了一个旧的考试,其中说: observe that *it1 == *it2 is not the same as *it2 == *it1 在这种情况下,it1是某种类型IT1的迭代器,而it2是某种类型IT2的迭代器. IT1 it1和IT2 it2作为函数的参数,其中IT1可以与IT2相同
在操作符订购时是否有任何不同?=?
我遇到了一个旧的考试,其中说:
在这种情况下,it1是某种类型IT1的迭代器,而it2是某种类型IT2的迭代器. IT1 it1和IT2 it2作为函数的参数,其中IT1可以与IT2相同.示例代码: template <typename IT1,typename IT2> bool f(IT1 it1,IT2 it2) { return *it1 == *it2; } 有什么想法吗?在我看来,顺序不应该影响operator ==的结果,所以我很困惑. 解决方法
实际上,运算符重载可能会产生意外结果.考虑以下:
#include <iostream> class Bar; class Foo { public: Foo() {} int operator==(const Bar& bar) { std::cout << "foo == barn"; return 0; } }; class Bar { public: Bar() {} int operator==(const Foo& foo) { std::cout << "bar == foon"; return 0; } }; int main() { Foo foo; Bar bar; foo == bar; // prints "foo == bar" bar == foo; // prints "bar == foo" return 0; } 这里实际上有两个不同的运算符==被调用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |