我是相当新的C ++和我一直在读,写一些我自己的代码。 我看到这些运营商不时地,如果是这样,即使使用正确的字?
+= // Not sure what it means
所以我的问题是:它们意味着什么/做的,什么是他们叫什么名字?
为了进一步的参考,我想知道他们是所谓的,所以我可以很容易地看看它(为简单搜索“+ =”例如产生什么)。
编辑:对于其他人谁不知道的意思(或在我的情况知道的这些名字),我发现这个维基百科链接,可能出现的方便的其他人: http://en.wikipedia.org/wiki/Operators_in_C_and_C% 2B%2B
是的,这些都是运营商。 更具体地,它们被称为复合赋值运算符。 这里是他们的名单如下:
*= /= %= += -= >>= <<= &= ^= |=
它们的定义如下所示:
如下形式的表达的行为E1 op = E2
相当于E1 = E1 op E2
除了E1
只计算一次。
所以x += 5;
是几乎相同x = x + 5;
。
你可以把它作为一个修改补充。 如果你只是做x + 5
,表达式的结果就是你会得到什么,如果你加入x
和5
在一起,但x
并没有改变。 如果你做x += 5;
, x
实际上已经5添加到它的值。
它只是一个缩写: 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