Навіщо потрібно клонування і як його реалізувати? Який спосіб безпечніше?
0. Використання оператора присвоювання не створює нового об'єкта, а лише копіює посилання на об'єкт. Таким чином, два посилання вказують на одну і ту ж область пам'яті, на один і той же об'єкт.
Для створення нового об'єкта з таким же станом використовується клонування об'єкта.
2. Більш безпечним способом є використання конструктора копіювання, яке дозволяє уникнути багатьох проблем. наприклад:
3. Іншим безпечним варіантом є фабричний метод (Factory method), який являє собою статичний метод, який повертає екземпляр свого класу.
Фабричний метод має такі переваги перед конструктором копіювання:
- Має ім'я (найчастіше getInstance або valueOf), що робить код більш зрозумілим.
- Необов'язково створювати новий об'єкт в результаті виклику: Об'єкти можуть бути кешованими і реіспользовани.
- Можуть повертати підтип свого повертається типу. Зокрема, можуть повертати об'єкт, у якого невідомий клас реалізації.
Якщо Вам сподобався питання, проголосуйте за нього
Elen_KL oltimus sarah euuu Midas vicod vkozak megaboom mirash mishamhoyan panser alexgiant LonsMan mixabuben scherband babkamen John_A KpyacaH kabdev hestika Snova T_mann SPereverziev uniservise NastyWaffle rotwood SamTan ifa silicon NepsOn alext64 ckruber art svetovik Ekaterina001 irina_zab74 pavelvolny dcba1257908 grim VasylZ