Я довольно новичок в 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;
конечно, столько же операторов: вы можете перегрузить его, чтобы придать ему альтернативное значение, и на самом деле мы часто это делаем, чтобы указать значение, например, в случае, когда это означает добавить 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