重载加法或乘法运算符是否类似于构造函数?

时间:2019-03-07 11:58:06

标签: c++ operator-overloading

我有以下两个类:closePrime()和trigger()。

trigger()类具有一个动态分配的closePrime对象的对象数组:

//trigger.h

#include "closePrime.h"
using namespace std;

class trigger
{
    private:
       closePrime* objArray;
       int size;
       ...

    public:
       trigger();
       trigger(int s);
       ...
}

...

// trigger.cpp
trigger::trigger()
{
    size = 2;
    objArray = new closePrime[size];
}

trigger::trigger(int s)
{
    size = s;
    objArray = new closePrime[size];
}

是否可以重载加法或乘法运算符,以便在主驱动程序/我的驱动程序中,我可以按照以下方式进行操作:

int main()
{
    // i'm not sure if this would be the syntax
    trigger triggerObj + 3;

    // or something like
    trigger triggerObj * 3;
}

这等于说

int main()
{
    trigger triggerObj(3);
}

我不熟悉运算符重载,所以我想知道是否可以同时使用这两个,或者不可以?我不确定即使在哪里也可以放置代码。让我知道是否需要分享更多信息。谢谢。

注意:没有STL

1 个答案:

答案 0 :(得分:0)

trigger triggerObj + 3;

在该语言(c ++)中看起来不像是合法的构造。

但是,您可以将其修改为以下内容:

trigger triggerObj = trigger() + 3;

trigger triggerObj = whatever + 3;

然后重载+,并在需要时重载=