Почему opAssign не перегружается для классов? - PullRequest
3 голосов
/ 07 декабря 2011

Эта таблица говорит, что перегрузка назначения возможна только для структур, но не классов. Это удивляет меня. Разве синтаксический сахар A = B не безопасен? Каково было обоснование дизайна для ограничения его структурами?

Ответы [ 3 ]

8 голосов
/ 07 декабря 2011

В D классы используются для справки.Поэтому, когда вы делаете A = B, вы не копируете сам объект, а просто ссылку на этот объект.

Ни один из объектов не изменяется в процессе.Так что нет смысла определять opAssign для них.

4 голосов
/ 07 декабря 2011

D классы имеют ссылочную семантику.Если вам нужен способ получить копию объекта (он думает), стандартная или обычная вещь - предоставить свойство .dup.

0 голосов
/ 07 декабря 2011

Я бы подал ошибку, и сделал .Общее правило: Язык программирования D , реализация DMD, веб-сайт.Так как у меня нет TDPL под рукой, я собираюсь приступить к реализации этого.

...