0

我对 C++ 相当陌生,我一直在阅读和编写一些自己的代码。我不时看到这些运营商,如果那是正确的词吗?

+= // Not sure what it means

所以我的问题是:它们是什么意思/做什么,它们叫什么?

为了进一步参考,我想知道它们叫什么,以便我可以轻松查找它(例如,简单地搜索“+=”一无所获)。

编辑:对于其他不知道含义的人(或者在我的情况下知道这些名称),我发现这个维基百科链接对其他人来说可能会派上用场:http ://en.wikipedia.org/wiki/Operators_in_C_and_C% 2B%2B

4

2 回答 2

13

是的,这些是运营商。更具体地说,它们被称为复合赋值运算符。以下是它们的完整列表:

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

它们的定义如下:

表单表达式的行为E1 op = E2等价于只计算一次的E1 = E1 op E2除外。E1

所以x += 5;几乎是一样的x = x + 5;

您可以将其视为修改添加。如果你只是这样做x + 5,表达式的结果就是你把和加x在一起得到的结果5,但x没有改变。如果你这样做x += 5;x实际上它的价值增加了​​ 5。

于 2013-04-04T15:57:25.830 回答
0

它只是一个缩写: 当然a+=2; 意味着a=a+2; 尽可能多的运算符:您可以重载它以赋予它其他含义,实际上我们经常这样做是为了提供含义,例如在我们的类 SomeClass 中添加 int 意味着什么:

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

于 2013-04-04T15:57:10.517 回答