我有一个问题,要求我重写操作符+,这样它就可以将两个数字的数值相加,并传递我们最终应用“me 10”时得到的数字。(例‘5’+‘6’=‘1’/5+6= 11 % 10 = 1)
我刚刚开始自学c++,一个清晰的解释对我的进步有很大的帮助。
发布于 2015-11-19 09:27:28
对于内置类型(如operator+等),不可能重载int()。因此,如果a和b的值分别为5和6,则不可能使a + b给出1的值。
但是,对于用户定义的类型(类、枚举等),也可以这样做。
例如,使用名为MyInt的类类型,可以将operator+()实现为接受一个参数的成员函数或接受两个参数的非成员函数。
一旦您可以实现一个operator+(),您就可以定义它来给出您喜欢的任何结果。您的类(为了讨论而调用MyInt )可能还需要一组其他函数(例如构造函数、其他数字运算符)。
注意--尽管在技术上是可能的--让数字类型反直觉地运行被认为是非常糟糕的做法。对于大多数人来说,用加法运算符做一个与加法不同的数字类型是违反直觉的。包括您自己,如果在几年后维护您的代码。
发布于 2015-11-19 10:05:29
出于可读性/可维护性的考虑,我认为像这样重载operator+()是非常糟糕的。
你当然不想写
(num1 + num2) % 10所以你可以有自己的功能
int modulo10AfterAddition (int leftNumber, int rightNumber)
{
return (leftNumber + rightNumber) % 10;
} 当然,如果您创建了一个像MyInt这样的类,那么您可以相应地修改它。
https://stackoverflow.com/questions/33797174
复制相似问题