Co to jest Konstruktor kopii?
Konstruktor kopii jest specjalną funkcją w C ++ i innych językach, na które wpływa C ++, która kopiuje obiekt kodujący. Programista robi to, dodając deklarację konstruktora kopiowania i odwołując się do obiektu. Przede wszystkim przynosi to korzyści programistom, oszczędzając czas, ale zapewnia również, że programista nie wprowadzi nieprawidłowego kodowania obiektu. Po utworzeniu kopia musi mieć inny wskaźnik pamięci lub będzie wskazywać tę samą sekcję, na którą wskazuje oryginalny obiekt. Jedną z głównych wad stosowania konstruktorów kopiowania jest to, że nie mogą one działać niezależnie; jeśli oryginalny obiekt zostanie usunięty, kopia również zostanie usunięta.
Gdy programista używa konstruktora kopiowania, mówi kodowi, aby skopiował obiekt już wymieniony w kodzie. Aby to zrobić, programista musi najpierw użyć deklaracji, aby nakazać kodowaniu wykonanie funkcji kopiowania. Programista musi także odwoływać się do innego obiektu, więc obiekt musi być już zbudowany lub nie będzie możliwości wykonania kopii.
Główną zaletą korzystania z konstruktora kopii jest oszczędność czasu. Zamiast ponownie wpisywać te same funkcje i ponownie kodować, programista może po prostu dodać odwołanie, a obiekt będzie gotowy. Ma to kolejną ukrytą zaletę w spójnym i dokładnym kodowaniu. Tak długo, jak oryginalny obiekt jest poprawnie zakodowany, kopiowany obiekt będzie miał także prawidłowe kodowanie. Obie te korzyści są najbardziej widoczne w przypadku złożonych obiektów, ale programiści mogą również skorzystać z kopiowania prostych obiektów.
W językach C ++ wiele funkcji wymaga wskaźnika pamięci. Mówi to funkcji dokładnie, gdzie szukać w pamięci pewnych informacji lub gdzie może przechowywać dane. Programista musi określić nowy wskaźnik pamięci, gdy używany jest konstruktor kopiowania; w przeciwnym razie dwa obiekty będą używać tej samej przestrzeni pamięci. Na pierwszy rzut oka może to nie wydawać się złe, ale może prowadzić do niespójności. Na przykład, jeśli oba obiekty mają ten sam wskaźnik, a jeden obiekt służy do przesyłania wniosków o pożyczkę, podczas gdy kopiowany obiekt służy do przesyłania wniosków o kartę kredytową, wówczas wszystkie wnioski o kartę kredytową zostaną zapisane wraz z wnioskami o pożyczkę.
Programiści muszą uważać na usuwanie obiektu, ponieważ obiekty konstruktora kopiowania nie mogą działać niezależnie. Jeśli programista usunie oryginalny obiekt, skopiowany obiekt nie będzie miał odniesienia. Bez kodu do odniesienia skopiowany obiekt nie będzie mógł wykonać swojego zadania i stanie się bezużyteczny.