2013-04-04 6 views
-1

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

+= // Not sure what it means 

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

Для дополнительной информации, я хотел бы знать, что они называются, поэтому я могу легко найти его (поиск просто для «+ =», например, ничего не дал).

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

+0

Я считаю, что они называются * составными операторами присваивания *. Должен иметь более удачный поиск с использованием этого термина. –

+1

На этот вопрос можно было легко ответить поиском Google, он показывает очень мало исследований. – depa

+1

Пока вы не ошибаетесь, я не знал их имени, поэтому искал все, что было не так. – dusz

ответ

13

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

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

Они определяются следующим образом:

Поведение выражения формы E1 op = E2 эквивалентно E1 = E1 op E2 за исключением того, E1 вычисляется только один раз.

Таким образом, x += 5; практически не отличается от x = x + 5;.

Вы можете придумать это как дополнение к модификации. Если вы просто делаете x + 5, результат выражения - это то, что вы получаете, если добавить x и 5 вместе, но x не изменился. Если вы делаете x += 5;, то x имеет 5 добавленных к нему значений.

+0

Скажем, например, int i = 5; i + = 5; // теперь я 10? – dusz

+0

есть, точно dusz ,! – 4pie0

+0

да. в основном, просто уменьшая размер исходного кода и увеличивая читаемость. –

0

его просто аббревиатура: 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

+1

Ну, технически это совершенно другой оператор (и для нестрогового типа, не только технически, но практически). –

+0

, конечно, это другое, но оно расширяется до этого, поэтому я объяснил, что значит использовать этот оператор. – 4pie0

+0

Он может быть перегружен таким образом, что его значение не эквивалентно расширению, которое вы показываете. –

 Смежные вопросы

  • Нет связанных вопросов^_^