给出一个简单的类:
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 );
};发布于 2014-03-13 20:21:58
正如评论中说的,你可以用另一个写一个。但是,如果对象真的是不同的(而不是像这里这样的两个整数),我更愿意强制执行一些顺序来防止混淆。并且更喜欢MyClass + int (MyClass是最主要的参与者,可以说是第一个)。
只是个人意见。
https://stackoverflow.com/questions/22389073
复制相似问题