Клонирование (программирование) - Википедия - Cloning (programming)
Эта статья нужны дополнительные цитаты для проверка.Август 2015 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В Информатика, клонирование относится к изготовлению точной копии объект, часто под парадигма из экземплярно-ориентированное программирование, или же объектно-ориентированного программирования (ООП).
Мелкие копии
В большинстве языков программирования (исключения включают: Рубин ), примитивные типы Такие как двойной
, плавать
, int
, длинный
и т. д. просто хранят свои значения где-нибудь в памяти компьютера (часто стек вызовов ). Используя простое присваивание, вы можете скопировать содержимое переменной в другую:
Копирование примитивных типов в Java или C ++:
int оригинал = 42;int копировать = 0;копировать = оригинал;
Многие языки программирования ООП (включая Ява, D, ECMAScript, и C # ) используют ссылки на объекты. Ссылки на объекты, похожие на указатели в других языках, позволяют передавать объекты с помощью адрес так что не нужно копировать весь объект.
Пример Java при «копировании» объекта с использованием простого присваивания:
Объект оригинал = новый Объект();Объект копировать = ноль;копировать = оригинал; // не копирует объект, а только ссылку на него
Объект не дублируется, переменные original и copy фактически относятся к одному и тому же объекту. В C ++ эквивалентный код
Объект* оригинал = новый Объект();Объект* копировать = НОЛЬ;копировать = оригинал;
дает понять, что это указатель к копируемому объекту, а не к самому объекту.
Клонирование
Процесс создания другой точной копии объекта, а не только его ссылки, называется клонированием. В большинстве языков язык или библиотеки могут способствовать некоторому клонированию. В Java Объект
класс содержит клон ()
метод, который копирует объект и возвращает ссылку на этот скопированный объект. Поскольку он находится в Объект
class, все классы, определенные в Java, будут иметь метод клонирования, доступный программисту (хотя для правильной работы его необходимо переопределить на каждом уровне, на котором он используется).
Клонирование объекта в Java:
Объект originalObj = новый Объект();Объект copyObj = ноль;copyObj = originalObj.клон(); // дублирует объект и присваивает новую ссылку copyObj
Объекты C ++ в целом ведут себя как примитивные типы, поэтому для копирования объекта C ++ можно использовать символ '=
'(присваивание) оператор. Для всех классов предусмотрен оператор присваивания по умолчанию, но его действие может быть изменено с помощью перегрузка оператора. При использовании этой техники есть опасность (см. нарезка ). Методом предотвращения нарезки может быть реализация решения, аналогичного Java клон ()
метод для классов и с помощью указателей. (Обратите внимание, что нет встроенного клон ()
метод)
Пример клонирования объекта на C ++:
Объект originalObj;Объект copyObj(originalObj); // создает копию originalObj с именем copyObj
Пример клонирования объекта на C ++ с использованием указателей (чтобы избежать нарезки, см. [1]):
Объект* originalObj = новый Объект;Объект* copyObj = nullptr;copyObj = новый Объект(*originalObj); // создает копию originalObj и присваивает ее адрес copyObj
Рекомендации
- ^ См. Вопросы и ответы на сайте en.allexperts.com В архиве 2009-07-18 на Wayback Machine