Какое значение и название для "+=" в C++?

Я довольно новичок в C++, и я читал и писал свой собственный код. Я вижу эти операторы время от времени, если это даже правильное слово для использования?

+= // Not sure what it means

Итак, мой вопрос: что они означают / делают, и как они называются?

Для дальнейшего ознакомления я хотел бы знать, как они называются, чтобы я мог легко найти их (например, поиск "+=" ничего не дал).

Изменить: Для тех, кто не знает значения (или в моем случае знал их название), я нашел ссылку на Википедию, которая может пригодиться другим людям: http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B

2 ответа

Решение

Да, это операторы. Более конкретно, они известны как составные операторы присваивания. Вот полный список из них:

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

Они определены так:

Поведение выражения формы 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

Другие вопросы по тегам