是否可以在朋友B类中重载A类的运算符?

时间:2019-05-01 14:30:00

标签: c++

我正在尝试从实验室中解决以下问题:

  

定义一个名为Repository的类,该类具有2个整数私有变量。 > class包含一个空的构造函数,另一个包含2个参数。显示类的值的> accesor方法也包含在> class中。编写另一个称为数学的课程,该课程是第一个课程的朋友。此类包含应用于存储在第一类中的值的基本算术>运算(+,-,*,/)的实现。每个>算术方法都接收一个从> first类实例化的对象作为参数。

我已经在整个互联网上搜索了两个小时,但是我没有发现任何关于将另一个类的运算符重载的信息。我了解重载机制,使用朋友功能解决了问题,但我仍然在问自己是否可以如上所述进行操作,如果可以,我希望知道如何执行。预先感谢!

我已经尝试过提到的here

解决方案
//friend Repository operator + (Repository &, Repository &);
    friend Mathematics;
};
/*
Repository operator + (Repository &rep1, Repository &rep2)
{
    Repository obToRet;
    obToRet.val1 = rep1.val1 + rep2.val1;
    obToRet.val2 = rep1.val2 + rep2.val2;
    return obToRet;
}*/

class Mathematics
{
public:
    friend Repository;
    public static Repository operator+(Repository &rep1, Repository &rep2)
    {
        Repository objtoret;
        objtoret.val1 = rep1.val1 + rep2.val1;
        objtoret.val2 = rep1.val2 + rep2.val2;
        return objtoret;
    }
};

1 个答案:

答案 0 :(得分:0)

所要求的只是执行算术运算。不是您必须使它们超载:

>>> s = defaultdict(lambda a=[0]: a.__setitem__(0, a[0] + 1) or a[0])
>>> s[6]
1
>>> s[9]
2
>>> s[6]
1
>>> s[8]
3