c – 比较运算符重载

这是最佳做法(在这种情况下):

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

// Implementation 1
bool Foo::operator!=(const Foo& other) {
  return bar != other.bar
}

// Implementation 2
bool Foo::operator!=(const Foo& other) {
  return !(*this == other);
}

对于像>,<,< =,>等运算符,如果可能,我会与实现2。但是,对于!=我认为实现1是更好,因为另一个方法调用没有,这是正确的吗?

第二个实现具有显着的约束,==将总是与!=相反的布尔。这可能是你想要的,它使你的代码更容易维护,因为你只需要改变一个实现,保持两者同步。
http://stackoverflow.com/questions/10575766/comparison-operator-overloading

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – 比较运算符重载