简体   繁体   English

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

[英]Is overloading addition or multiplication operator similar to constructor?

I have the following two classes: closePrime() and trigger().我有以下两个类:closePrime() 和 trigger()。

The trigger() class has a dynamically allocated object array of closePrime objects: 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];
}

Is it possible to overload the addition or multiplication operator so that in main/my driver I can do something along the following lines:是否可以重载加法或乘法运算符,以便在主/我的驱动程序中我可以按照以下方式做一些事情:

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

    // or something like
    trigger triggerObj * 3;
}

And it would be equal to saying这等于说

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

I am new to operator overloading so I was wondering if one, both, or neither of these were possible?我是运算符重载的新手,所以我想知道是否可能有一个,两个或两个都不可能? I wasn't sure where I would put the code even if it was.我不确定我会把代码放在哪里,即使它是。 Let me know if I need to share more info.如果我需要分享更多信息,请告诉我。 Thank you.谢谢你。

Note: No STL注意:没有 STL

trigger triggerObj + 3;

Doesn't look like a legal construct within the language (c++).看起来不像语言(c++)中的合法结构。

However you may modify it to something like:但是,您可以将其修改为:

trigger triggerObj = trigger() + 3;

or或者

trigger triggerObj = whatever + 3;

Then overload + and possible = if needed.然后重载+和可能的=如果需要。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM