Co to jest konstruktor kopii?
Konstruktor kopii jest specjalną funkcją w C ++, a inne języki pod wpływem C ++, które kopiują obiekt kodujący. Programator robi to, dodając deklarację konstruktora kopii i odwołując się do obiektu. Przede wszystkim korzyści dla programisty poprzez oszczędzanie czasu, ale zapewnia również, że programista nie wprowadza nieprawidłowo kodowania obiektu. Po wykonaniu kopii musi mieć inny wskaźnik pamięci lub wskazuje na tę samą sekcję, na którą wskazuje oryginalny obiekt. Jedną z głównych wad korzystania z konstruktorów kopiowania jest to, że nie mogą one funkcjonować niezależnie; Jeśli oryginalny obiekt zostanie usunięty, wówczas kopia będzie, również.
Gdy programista używa konstruktora kopii, mówi kodowi, aby skopiować obiekt już wymieniony w kodzie. Aby to zrobić, programista musi najpierw użyć deklaracji, aby poinformować kodowanie do wykonania funkcji kopiowania. Programista musi również odwołać się do innego obiektu, więc obiekt musi być już zbudowany lub będzie no Sposób wykonania kopii.
Główną zaletą korzystania z konstruktora kopii jest to, że oszczędza czas. Zamiast konieczności ponownego ponownego ponownego przepisywania tych samych funkcji i kodowania, programista może po prostu dodać odniesienie, a obiekt będzie gotowy. Ma to kolejną ukrytą korzyść w spójnym i dokładnym kodowaniu. Dopóki oryginalny obiekt zostanie poprawnie kodowany, skopiowany obiekt będzie również miał 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. To mówi dokładnie funkcja, gdzie szukać w pamięci w poszukiwaniu określonych informacji lub gdzie może przechowywać dane. Programator musi określić nowy wskaźnik pamięci, gdy używany jest konstruktor kopii; W przeciwnym razie dwa obiekty będą używać tej samej przestrzeni pamięci. Na powierzchni może to nie wydawać się złe, ale może się leczyćD do niespójności. Na przykład, jeśli oba obiekty udostępniają ten sam wskaźnik, a jeden obiekt jest używany do składania wniosków o pożyczkę, podczas gdy skopiowany obiekt jest składany do składania wniosków o kartę kredytową, wszystkie wnioski o karty kredytowe będą przechowywane w wnioskach o pożyczkę.
Programiści muszą uważać za wymazanie obiektu, ponieważ obiekty konstruktora kopiowania nie mogą funkcjonować niezależnie. Jeśli programista usuwa oryginalny obiekt, wówczas skopiowany obiekt nie będzie miał nic do odniesienia. Bez kodu do odniesienia, skopiowany obiekt nie będzie w stanie wykonać swojego zadania i stanie się bezużyteczny.