我遇到了一个旧的考试,其中说:
observe that
*it1 == *it2
is not the same as*it2 == *it1
在这种情况下,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 == bar\n"; return 0; }};class bar {public: bar() {} int operator==(const Foo& foo) { std::cout << "bar == foo\n"; return 0; }};int main(){ Foo foo; bar bar; foo == bar; // prints "foo == bar" bar == foo; // prints "bar == foo" return 0;}
这里实际上有两个不同的运算符==被调用.
总结以上是内存溢出为你收集整理的operator == C中的订单全部内容,希望文章能够帮你解决operator == C中的订单所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)