C ++ operator ==,检查自我平等是否重要?

时间:2016-02-09 14:23:45

标签: c++ operator-overloading

敌人的例子

bool Foo::operator==(const Foo& other) {
  return bar == other.bar;
} 

chek是否很重要,就像这样的对象一样吗?

bool Foo::operator==(const Foo& other) {
if (this == &other) {
return true;
}
  return bar == other.bar;
}

3 个答案:

答案 0 :(得分:2)

如果要进行大量比较,那么检查自我平等可能会加快执行速度。在这种情况下,应该对代码进行分析,以查看在比较同一对象时节省了多少时间,以及比较单独变量时占用(浪费)的时间。

答案 1 :(得分:0)

可以想象,这可以使同一对象的比较更快一些,但代价是减慢不同对象的比较。在几乎所有情况下,这都是净损失。

答案 2 :(得分:0)

您在上面的代码中检查两次没有任何意义。但是,在某些情况下,当您使用动态内存时,事情可以快速变化,这可能是有益的。对于您拥有的代码,第一个代码块就足够了。