首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >最佳做法:对称函数的实现

最佳做法:对称函数的实现
EN

Stack Overflow用户
提问于 2014-03-13 19:33:46
回答 1查看 140关注 0票数 1

给出一个简单的类:

代码语言:javascript
复制
class MyClass
{
    public: int var;
};

以及下列全局/自由运算符函数:

代码语言:javascript
复制
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):

代码语言:javascript
复制
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 );
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-13 20:21:58

正如评论中说的,你可以用另一个写一个。但是,如果对象真的是不同的(而不是像这里这样的两个整数),我更愿意强制执行一些顺序来防止混淆。并且更喜欢MyClass + int (MyClass是最主要的参与者,可以说是第一个)。

只是个人意见。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22389073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档