首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写运算符+

重写运算符+
EN

Stack Overflow用户
提问于 2015-11-19 06:58:38
回答 2查看 91关注 0票数 0

我有一个问题,要求我重写操作符+,这样它就可以将两个数字的数值相加,并传递我们最终应用“me 10”时得到的数字。(例‘5’+‘6’=‘1’/5+6= 11 % 10 = 1)

我刚刚开始自学c++,一个清晰的解释对我的进步有很大的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-19 09:27:28

对于内置类型(如operator+等),不可能重载int()。因此,如果ab的值分别为56,则不可能使a + b给出1的值。

但是,对于用户定义的类型(类、枚举等),也可以这样做。

例如,使用名为MyInt的类类型,可以将operator+()实现为接受一个参数的成员函数或接受两个参数的非成员函数。

一旦您可以实现一个operator+(),您就可以定义它来给出您喜欢的任何结果。您的类(为了讨论而调用MyInt )可能还需要一组其他函数(例如构造函数、其他数字运算符)。

注意--尽管在技术上是可能的--让数字类型反直觉地运行被认为是非常糟糕的做法。对于大多数人来说,用加法运算符做一个与加法不同的数字类型是违反直觉的。包括您自己,如果在几年后维护您的代码。

票数 0
EN

Stack Overflow用户

发布于 2015-11-19 10:05:29

出于可读性/可维护性的考虑,我认为像这样重载operator+()是非常糟糕的。

你当然不想写

代码语言:javascript
复制
(num1 + num2) % 10

所以你可以有自己的功能

代码语言:javascript
复制
int modulo10AfterAddition (int leftNumber, int rightNumber)
{
    return (leftNumber + rightNumber) % 10;
} 

当然,如果您创建了一个像MyInt这样的类,那么您可以相应地修改它。

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

https://stackoverflow.com/questions/33797174

复制
相关文章

相似问题

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