-->

什么是“+ =” C ++中的含义和名称?(What is the meaning and name

2019-08-19 13:48发布

我是相当新的C ++和我一直在读,写一些我自己的代码。 我看到这些运营商不时地,如果是这样,即使使用正确的字?

+= // Not sure what it means

所以我的问题是:它们意味着什么/做的,什么是他们叫什么名字?

为了进一步的参考,我想知道他们是所谓的,所以我可以很容易地看看它(为简单搜索“+ =”例如产生什么)。

编辑:对于其他人谁不知道的意思(或在我的情况知道的这些名字),我发现这个维基百科链接,可能出现的方便的其他人: http://en.wikipedia.org/wiki/Operators_in_C_and_C% 2B%2B

Answer 1:

是的,这些都是运营商。 更具体地,它们被称为复合赋值运算符。 这里是他们的名单如下:

*= /= %= += -= >>= <<= &= ^= |=

它们的定义如下所示:

如下形式的表达的行为E1 op = E2相当于E1 = E1 op E2除了E1只计算一次。

所以x += 5; 是几乎相同x = x + 5;

你可以把它作为一个修改补充。 如果你只是做x + 5 ,表达式的结果就是你会得到什么,如果你加入x5在一起,但x并没有改变。 如果你做x += 5;x实际上已经5添加到它的值。



Answer 2:

它只是一个缩写: a+=2; 装置a=a+2; 当然,许多运营商:你可以重载它给它另一个意思,其实我们ANS做到这一点往往提供意例如在意味着什么INT添加到我们的类SomeClass的情况:

SomeClass s;
s+=1; //operator+=(SomeClass& s, int i){} is used here

class A{
public:
    A():i_(123){}
    ~A(){}
    int i(){return i_;}
    A const& operator+=(int i){
       std::cout<<"operator+=";
       this->i_=i_+i;
    }
private:
    int i_;
};


int main(int argc, char** argv) {

    A a1;
    a1+=3;
    std::cout<<a1.i();
    return OK;
}

输出:操作= + 126



文章来源: What is the meaning and name for “+=” in C++?