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.