LINUX.ORG.RU

C++ копирующий оператор присваивания


0

2

В Страуструпе написано, что копирующий оператор присваивания не может быть автоматом сгенерирован если класс содержит ссылку, константу и тип определяемый пользователем без копирующего оператора присваивания.

Вопрос, а если я свой пишу копирующий оператор присваивания, как мне ссылке присвоить новое значение и что делать со старым? У константы можно временно с помощью const_cast снять константность при присваивании?

Ответ на: комментарий от aho

>просто не храни ссылку в классе - они не для того были придуманны

это понятно, но если Страуструп акцентирует на этом внимание, но не говорит что это невозможно логично предположить, что это возможно.

spinlock
() автор топика
Ответ на: комментарий от spinlock

если Страуструп акцентирует на этом внимание, но не говорит что это невозможно логично предположить, что это возможно

ну из самолёта прыгнуть без парашюта тоже можно, и об этом специально не говорят, но это кагбэ подразумевается

shty ★★★★★
()
Ответ на: комментарий от spinlock

ниногда акцентируют внимание на разгерметизациях и кислородных масках, но это же не значит, что надо всё разгерметизировать и дышать в маске потому что про это кто-то говорил, что такое возможно в принципе.

anonymous
()

Что делать со старым? Очевидно то же, что ты делаешь в деструкторе, единственное, надо проверять на присваивание вида x = x

unanimous ★★★★★
()
Ответ на: комментарий от aho

> просто не храни ссылку в классе - они не для того были придуманны

Мало ли для чего их придумывали. Вполне можно хранить, если по смыслу подходит. Но если хочется её менять, в том числе присваиванием, значит, по смыслу не подходит.

const86 ★★★★★
()
Ответ на: комментарий от shty

Ай, мой шаблон... Думал, ты про выстрел в ногу чего-нибудь скажешь. Можно же, если очень хочется, даже несмотря на «незаконное владение короткостволом».

slackwarrior ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.