Przejdź do treści głównej
INF.04Programowanie Obiektowe i Paradygmaty (OOP)

Konstruktor kopiujący i Kopiowanie obiektów

Konstruktor tworzący nowy obiekt jako kopię istniejącego. Płytka kopia kopiuje wskaźniki/referencje, a głęboka alokuje nowe niezależne zasoby.

Płytka kopia (Shallow Copy) vs Głęboka kopia (Deep Copy):

  • Płytka kopia: Kopiuje wartości pól bit po bicie. Jeśli pole jest wskaźnikiem/referencją, oba obiekty wskazują na ten sam obszar w pamięci. Modyfikacja w jednym obiekcie zmieni dane w drugim!
  • Głęboka kopia: Alokuje nowy, niezależny blok pamięci i kopiuje do niego zawartość wskazywanego obiektu.
CPP
class Tablica {
    int* data;
    int size;
public:
    // Konstruktor kopiujący (Głęboka kopia)
    Tablica(const Tablica& other) {
        size = other.size;
        data = new int[size];
        for (int i = 0; i < size; i++) data[i] = other.data[i];
    }
    ~Tablica() { delete[] data; }
};

Chcesz sprawdzić to pojęcie w praktyce?

Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Konstruktor kopiujący i Kopiowanie obiektów lub rozpocznij trening.