Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
去年关闭。
给定一个简单的类:
以及以下全局/自由运算符功能:
是否有必要同时实现对称函数的两种方式?或者只是其中之一-如果是这样,哪一个?是否有根据此的一般指南?
谢谢
编辑#1:
也有可能(感谢@Karoly Horvath):
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
去年关闭。
给定一个简单的类:
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 );
};
最佳答案
正如评论所说,您可以用另一种来写。但是如果对象真的不同(不是两个整数),我宁愿强制执行一些顺序以防止混淆。并且更喜欢MyClass + int
(MyClass
是主要角色,放在第一位)。
只是个人意见。
10-06 00:00