Клон. У Java ми також можемо використовувати метод clone для створення об’єкта з існуючого об’єкта. Однак конструктор копіювання має деякі переваги перед методом клонування: конструктор копіювання набагато легше реалізувати.29 серпня 2024 р.
У C++ цей оператор створює копію стану об’єкта. У Java він просто копіює посилання. Стан об’єкта не копіюється, тому неявний виклик конструктора копіювання не має сенсу. І це насправді все.
Альтернативи clone(): Конструктор копіювання Перший метод використовує конструктор копіювання, який приймає один параметр – об’єкт для клонування. Конструктор копіювання насправді не є чимось особливим. Як ви можете бачити в прикладі 8, це просто простий конструктор, який очікує аргумент класу, до якого він належить.
Ми можемо розділити виклики конструкторів на два типи: Альтернативні виклики конструкторів починаються з ключового слова this. Вони є використовується для виклику альтернативних конструкторів того самого класу. Виклики конструктора суперкласу починаються з ключового слова super.
Конструктор копіювання явно визначається розробником і може включати спеціальну логіку для копіювання. Метод clone() є методом, успадкованим від класу Object, вимагає реалізації інтерфейсу Cloneable і зазвичай використовується для поверхневого копіювання.
Якщо для типу класу не надано визначених користувачем конструкторів копіювання, компілятор завжди оголошуватиме конструктор копіювання як неявний вбудований відкритий член свого класу.
Визначений користувачем конструктор копіювання зазвичай необхідний, коли об’єкт володіє покажчиками або посиланнями, які не можна спільно використовувати, як-от у файл, у цьому випадку також слід записати деструктор і оператор присвоєння (див. правило трьох).