【发布时间】:2021-04-05 20:14:27
【问题描述】:
或者换句话说,这两个块对于编译器来说是否相等:
if (a!=b){
// do something
}
if (!(a==b)){
// do something
}
【问题讨论】:
-
不,但从语义上讲,您的运算符!= 应该只实现为
return !operator==(rhs);(反之亦然) -
或者类似地,它是否也会覆盖
(a<=b),因为它可以简化为(a<b || a==b)? -
有没有一种场景可以实现这两个运算符而不直接依赖另一个运算符? (当然你不需要对它们进行功能性编程来检查是否相等,但是它的应用程序是什么)
-
Boost.Lambda 在 C++11 之前使用运算符重载将 lambda 函数组合在一起。在该库中,所有运算符重载都返回一个特殊的函子对象,
==和!=都是独立定义的(即,在其参数上委托给各自的运算符)
标签: c++