JSON Spirit方便operator==
template< class Config >
bool Value_impl< Config >::operator==( const Value_impl& lhs ) const
{
if( this == &lhs ) return true;
if( type() != lhs.type() ) return false;
return v_ == lhs.v_;
}
变量lhs
看起来像熟悉的&#34;左手边&#34;从许多其他例子中可以看出,如果分配给这个运算符的东西不在左侧,这将无法按预期工作。
这是对的吗?如果是这样,为什么?
在任何一种情况下,请引用标准。
答案 0 :(得分:1)
b = x == y;
会转换为b = x.operator==( y );
,因此必须为operator==()
定义x
,其中y
采用任何类型的参数。
class Y
{
public:
};
class X
{
public:
bool operator==( Y rhs )
{
return false;
}
};
void tester()
{
X x;
Y y;
bool b = x == y; // works
b = y == x; // error
}