C++运算符==,检查自相等是否重要

C++ operator ==, is it important to check self equality?

本文关键字:是否 运算符 检查 C++      更新时间:2023-10-16

敌人的例子我们嘿嘿

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

像这样的对象是否重要吗?

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

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

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

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