operator == C中的订单

operator == C中的订单,第1张

概述在 *** 作符订购时是否有任何不同?=? 我遇到了一个旧的考试,其中说: observe that *it1 == *it2 is not the same as *it2 == *it1 在这种情况下,it1是某种类型IT1的迭代器,而it2是某种类型IT2的迭代器. IT1 it1和IT2 it2作为函数的参数,其中IT1可以与IT2相同.示例代码: template <typename IT1, 在 *** 作符订购时是否有任何不同?=?

我遇到了一个旧的考试,其中说:

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中的订单所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1216936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存