Operator przypisania i inkrementacji

0

Co w kodzie C++ oznacza następujący zapis suma+=x;?

4

Dodajesz do zmiennej suma jakąś wartość x.
Weźmy zmienną suma = 0. Teraz suma += 2 zmieni wartość naszej zmiennej suma z 0 na 2, czyli zapis suma += x oznacza suma = suma + x.

5
suma+=x; 

jest odpowiednikiem

suma=suma+x;
4
kosmonauta80 napisał(a):
suma+=x; 

jest odpowiednikiem

suma=suma+x;

To jest C++, więc to nie musi być prawda

#include <iostream>

class T {
public:
    T& operator+=(const T&) {
        std::cout << "Foo\n";
        return *this;
    }

    friend const T operator+(const T&, const T&);
};

const T operator+(const T&, const T&) {
    std::cout << "Bar\n";
    T t;
    return t;
}

int main() {
    T suma, x;

    suma += x;
    suma = suma + x;
}
0

Jeśli chodzi o operacje na podach(plain od data type) lub po prostu danych, które są bliżej C niż C++(np. int, float): coś operator= x oznacza coś = coś operator x. Gdzie operatorem mogą być wszelkie operacje arytmetyczne, bitowe.
Jeśli natomiast masz klasę z C++ możliwe, że będzie miał przeciążony operator żeby zachowywał się w inny sposób.
Np. możesz stworzyć klasę customInt, która będzie używała operatora + jak operatora -.

0
Nikto0 napisał(a):

Co w kodzie C++ oznacza następujący zapis suma+=x;?

Jest to compound assignment, popularny w wielu językach, nie tylko w C++. Możesz o nich więcej przeczytać tutaj:

Krótko mówiąc a += b to jest mniej więcej to samo co a = a + b, czyli przypisanie wartości większej o dany argument.

1 użytkowników online, w tym zalogowanych: 0, gości: 1