Копирование объектов и интерфейс icioneable
Копирование указателей с помощью присваивания
Первым способом копирования является просто присваивание рС2=рС1. В этом случае мы получаем два указателя на один и тот же объект, и изменения, произведенные с использованием первого указателя, можно будет обнаружить в данных, адресуемых вторым указателем.
_gc class CopyDemo // класс сборщика мусора CopyDemo { public: static void Main() { Console::WriteLine("Copy is done via pC2 = pCl"); // Копия сделана через рС2 = pCl InitializeCourse(); pC1 › Show("original"); // Показать ("оригинал"); pC2 = pCl; pC2 › Show("copy"); // Показать ("копия"); pC2 › pTitle = ".NET Programming"; // Программирование на .NET pC2 › AddStudent("Charlie"); // Чарли pC2 › Show("copy with changed title and new student"}; // Показать ("копия с измененным названием //и новым студентом"); pC1 › Show("original"); // Показать ("оригинал");
Экземпляр класса Course (Курс) инициализируется методом InitializeCourse, причем в качестве названия курса выбирается "Intro to Managed C++" (Введение в управляемый C++) и на курс записаны два студента. Затем выполняется присваивание рС2=рС1, и с помощью указателя рС2 изменяется заголовок и добавляется новый студент. Затем демонстрируется, что произведенные изменения видны с помощью обоих указателей. Приведем результат работы первой части программы:
Copy is done via pC2 = pC1 --original----- Course: Intro to Managed C++ with 2 students John Mary – copy-– - Course: Intro to Managed C++ with 2 students John Mary – copy with changed title and new student----- Course: .NET Programming with 3 students John Mary Charlie – --original----- Course: .NET Programming with 3 students John Mary Charlie
А вот и перевод выдачи:
Копия сделана через рС2 = рС1 – --оригинал--– Курс: Введение в Управляемый С ++ с 2 студентами Джон Мэри – --копия----- Курс: Введение в Управляемый С ++ с 2 студентами Джон Мэри – --копия с измененным названием и новым студентом----- Курс: Программирование на .NET с 3 студентами Джон Мэри Чарли – --оригинал----- Курс: Программирование на .NET с 3 студентами Джон Мэри Чарли