我是C ++的新手,我一直在阅读和编写自己的一些代码。我不时会看到这些操作符,如果这是正确的用词吗?
+= // Not sure what it means
所以我的问题是:他们的意思/做什么,他们叫什么?
为了进一步参考,我想知道它们被称为什么,所以我可以很容易地查找它(仅仅搜索“+ =”,例如没有产生任何东西)。
编辑:对于其他不了解其含义的人(或者在我的情况下知道这些的名称),我发现这个维基百科链接可能对其他人有用:http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B
答案 0 :(得分:13)
是的,这些都是运营商。更具体地说,它们被称为复合赋值算子。以下是它们的完整列表:
*= /= %= += -= >>= <<= &= ^= |=
它们的定义如下:
E1 op = E2
形式的表达式的行为等同于E1 = E1 op E2
,但E1
仅被评估一次。
因此x += 5;
与x = x + 5;
几乎相同。
您可以将其视为修改添加。如果你只是x + 5
,那么表达式的结果就是你将x
和5
加在一起,但x
没有改变的结果。如果您执行x += 5;
,x
实际上已将5添加到其值中。
答案 1 :(得分:0)
它只是一个缩写:
a+=2;
表示a=a+2;
当然有很多运算符:你可以重载它以赋予它替代意义,实际上我们经常这样做以提供意义,例如在将类添加到我们的类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;
}
输出:operator + = 126