Co w kodzie C++ oznacza następujący zapis suma+=x;?
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.
suma+=x;
jest odpowiednikiem
suma=suma+x;
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;
}
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 -.
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:
- Wersja polska: https://learn.microsoft.com/pl-pl/cpp/cpp/assignment-operators?view=msvc-170
- Wersja angielska (zalecana): https://learn.microsoft.com/en-us/cpp/cpp/assignment-operators?view=msvc-170
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.