0

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看起来像许多其他示例中熟悉的“左侧”,这意味着如果该运算符所分配的内容不在左侧,这将无法按预期工作。

那是对的吗?如果是这样,为什么?

无论哪种情况,请引用标准。

4

1 回答 1

1

b = x == y;转换为必须定义b = x.operator==( y );一个必须为它接受任何类型的参数的参数。operator==()xy

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

}
于 2014-05-19T21:17:51.567 回答