Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Escapable
54 / 54 / 9
Регистрация: 09.11.2010
Сообщений: 120
1

ICloneable, Copy-constructor и Serialization\Deserialization: Какой из данных методов вы считаете предпочтительным

16.03.2012, 23:53. Просмотров 1180. Ответов 3
Метки нет (Все метки)

Какой из данных методов вы считаете предпочтительным (и почему), если дело касается глубокой копии (deep copy) объекта? Правду ли говорят, что лучше воздерживаться от реализации интерфейса ICloneable?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2012, 23:53
Ответы с готовыми решениями:

XML serialization & XML deserialization
Проблема в том, что я по-видимому не понимаю, как сериализовать данные из...

Реализовать ввод исходных данных, расчет и вывод данных в виде методов класса. В Main только создание объектов и вызов методов
Всем привет) помогите пожалуйста с заданием "Реализовать ввод исходных данных,...

boost::copy для создания copy constructor and assignment operator
<boost/iostreams/copy.hpp> кто ниб использовал boost::copy для создания copy...

this и Copy-Constructor
Скажите пожалуйста почему даный еод вызывает RTE(Run Time Error) Добавлено...

Copy constructor
#include "stdafx.h" #include <iostream> using namespace::std; class alpha{...

3
kolorotur
Эксперт .NET
10484 / 8671 / 2157
Регистрация: 17.09.2011
Сообщений: 14,888
Завершенные тесты: 1
17.03.2012, 11:13 2
Предпочитаю клонировать - код выглядит понятней, не надо лезть в описание конструктора, чтобы узнать, что ссылка передается для копирования.
Сериализация или десериализация - это уже "кишки" клонирования, здесь все зависит от типа клонируемого объекта и условий задачи.

Цитата Сообщение от Escapable Посмотреть сообщение
лучше воздерживаться от реализации интерфейса ICloneable
Первый раз такое слышу.
А те, кто это говорит, никак не аргументируют свою позицию?
0
Escapable
54 / 54 / 9
Регистрация: 09.11.2010
Сообщений: 120
17.03.2012, 18:50  [ТС] 3
Цитата Сообщение от kolorotur Посмотреть сообщение
А те, кто это говорит, никак не аргументируют свою позицию?
Основной аргумент
The problem with ICloneable is that the Clone method does not explicitly specify whether it is performing a shallow or deep copy, so callers can never be sure.
Вот из обсуждения на stackoverflow
The reason not to use it is because it's vague. It doesn't make clear whether you're getting a shallow or a deep copy; that's up to the implementer.
Просто стало интересно, что здешние разработчики думают по этому поводу.
0
kolorotur
Эксперт .NET
10484 / 8671 / 2157
Регистрация: 17.09.2011
Сообщений: 14,888
Завершенные тесты: 1
17.03.2012, 19:36 4
Цитата Сообщение от Escapable Посмотреть сообщение
The problem with ICloneable is that the Clone method does not explicitly specify whether it is performing a shallow or deep copy, so callers can never be sure.
The reason not to use it is because it's vague. It doesn't make clear whether you're getting a shallow or a deep copy; that's up to the implementer.
Нормально...
То же самое можно сказать о любом методе не с говорящим названием, включая конструктор или сериализацию.

Именно для этого нужно добавлять комментарии в заголовок метода, описывающие тип клонирования.
Ну или реализовать ICloneable явным образом и вызывать метод DeepClone, например:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class MyClass : ICloneable
{
   object ICloneable.Clone()
   {
      return DeepCopy();
   }
 
   public MyClass DeepCopy()
   {
      MyClass clone;
      // Perform cloning here
      return clone;
   }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2012, 19:36

Default copy constructor
Что default copy constructor делает, из-за чего мой NRVO выводит разные...

copy constructor operator=
сижу я значит почитываю черновик будущего стандарта и вижу const C&...

что делает copy constructor?
что делает copy constructor?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru