最佳实践:实现对称函数

时间:2014-03-13 19:33:46

标签: c++

给出一个简单的类:

class MyClass
{
    public: int var;
};

以及以下全局/空闲运算符函数:

MyClass operator + ( const int& lhs , const MyClass& rhs )
{
    return MyClass( lhs + rhs.var );
};

MyClass operator + ( const MyClass& lhs , const int& rhs )
{
    return MyClass( lhs.var + rhs );
};

是否值得实现两种对称功能?或者只是其中之一 - 如果是这样,哪一个?根据这个是否有一般指导原则?

谢谢

编辑#1:

也有可能(感谢@Karoly Horvath):

MyClass operator + ( const int& lhs , const MyClass& rhs )
{
    return MyClass( lhs + rhs.var );
};

MyClass operator + ( const MyClass& lhs , const int& rhs )
{
    // return rhs + lhs; // or
    return operator + ( rhs , lhs );
};

1 个答案:

答案 0 :(得分:0)

正如评论所说,你可以用另一个写一个。但是如果对象真的不同(不是像这里的两个整数),我宁愿执行一些命令来防止混淆。并且更喜欢MyClass + intMyClass是主要参与者,先把它放在首位)。

只是个人意见。