Middle
Jak przeciążyć operator inkrementacji postfix i prefix w C++?
sobes.tech AI
Odpowiedź od AI
Operatorów inkrementacji prefiksowej i sufiksowej ++ w C++ nadpisuje się za pomocą dwóch różnych sygnatur funkcji członkowskich:
-
Inkrementacja prefiksowa: Zwraca referencję do bieżącego obiektu (
*this) po jego zmianie.ClassName& operator++() { // Logika inkrementacji prefiksowej // Zmiana stanu obiektu return *this; // Zwraca referencję do zmienionego obiektu } -
Inkrementacja sufiksowa: Zwraca kopię obiektu przed jego zmianą. Różni się obecnością fikcyjnego parametru
int.ClassName operator++(int) { ClassName temp = *this; // Zapisuje bieżący stan // Logika inkrementacji sufiksowej // Zmiana stanu obiektu return temp; // Zwraca zapisany kopię }
| Typ inkrementacji | Sygnatura funkcji | Wartość zwracana | Parametry |
|---|---|---|---|
| Prefiks | ClassName& operator++() |
Referencja do zmienionego obiektu | Brak |
| Sufiks | ClassName operator++(int) |
Kopia obiektu przed zmianą | Fikcyjny int |