Czy ktoś praktycznie w Pascalu pisał klasę z konstruktorem kopiującym i przeładowanym operatorem przypisania utworzonych obiektów danej klasy do siebie ??
Jest taki praktyczny mechanizm w C++ a nie wiem jak to jest rozwiązane w Pascalu ?
Czy ktoś praktycznie w Pascalu pisał klasę z konstruktorem kopiującym i przeładowanym operatorem przypisania utworzonych obiektów danej klasy do siebie ??
Jest taki praktyczny mechanizm w C++ a nie wiem jak to jest rozwiązane w Pascalu ?
W pasalu (jeżeli chodzi o klasy) do każdego obiektu masz dostęp tylko i wyłącznie przez wskaźnik, więc żadnego automatycznego kopiowania nigdy nie następuje a w związku z tym nigdy nie następuje potrzeba przeciążenia operatora kopiowania ani też potrzeba konstruktora kopiującego.
Możesz to załatwić tworząc metodę np Copy()
zwracającą nowy obiekt tej samej klasy.
W Delphi do tego służy metoda Assign, którą należy przeładować. Dodatkowa klasa powinna dziedziczyć po IPersistent
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Classes_TPersistent_Assign.html
http://stackoverflow.com/questions/4041760/correct-way-to-duplicate-delphi-object
i przeładowanym operatorem przypisania
Operatora przypisania nie można przeładować.
Przypisanie to przypisanie - w przypadku typów prymitywnych i rekordów jest to skopiowanie całej zawartości, w przypadku klas jest to przypisanie referencji.
Zresztą rzadko jest potrzeba, by kopiować obiekt. To często zadawane pytanie przez programistów C++ (jak skopiować obiekt), ale trzeba sobie najpierw odpowiedzieć na pytanie: po co?
... akurat mam potrzebę zrobienia kopi obiektu i jest problem bo przepisuje tylko referencję i tracę dostęp do danych z oryginału :( - napiszę po prostu funkcję kopiującą o treści tak jak w C++ ten brakujący przeładowany operator przypisania.