Sobes.tech
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