|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
Как лучше запретить копирование объекта?13.12.2014, 13:15. Показов 17025. Ответов 57
Метки нет (Все метки)
Есть класс, надо запретить копирование его экземпляров. Можно как то сделать, чтоб в интерфейсе класса вообще не было конструктора копии и оператора копирующего присваивания?
0
|
|
| 13.12.2014, 13:15 | |
|
Ответы с готовыми решениями:
57
Как запретить копирование с флешки? Как запретить копирование диска? Как обойти "запретить копирование" |
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 14.12.2014, 08:20 [ТС] | |
|
0
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 14.12.2014, 08:23 | |
|
0
|
|
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 14.12.2014, 12:21 [ТС] | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||
| 14.12.2014, 14:28 | |||||
|
Давай еще раз: noncopyable делает потенциального потомка некопируемым. Т.е. этот класс предназначен для того, чтобы от него отнаследовались и получили в наследнике запрет копирования. Ты же сам просил, чтобы в целевом классе не было конструктора копирования и оператора присваивания:
К слову, в boost используется точно такая же реализация noncopyable, как я привел. Добавлено через 27 минут Вообще, чтобы ты знал, разрешение контракта на этапе компиляции очень полезная практика, к использованию которой всегда надо стремиться. Добавлено через 8 минут taras atavin, В общем непонятно откуда вообще ты взял такие выводы про замкнутый круг и др. Возьми да попробуй в конце концов. Увидишь, что никакого замкнутого круга нет Ответ тебе дали. Он верный. Подтвержден практикой и используется многими людьми по всему миру. Больше добавить нечего.
1
|
|||||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||||||||||||||
| 14.12.2014, 15:32 [ТС] | |||||||||||||||||||
А теперь как на самом деле. Из того, что экземпляр нельзя копировать не следует, что он не может существовать, наоборот, класс должен иметь собственные экземпляры, не имеют смысла только его потомки, поэтому их в проекте нет. Вообще не декларированы, ни один класс не наследует от данного. Более того, запретить надо копирование только экземпляров данного класса, а если бы какие либо его потомки имели бы смысл, то имела бы смысл и операция их копирования, соответственно в них конструктор копии и оператор копирующего присваивания как раз должны были бы быть. Добавлено через 12 минут Так что дефолтный конструктор как раз public. Кстати, абстрактые классы в обязательном порядке имеют не реализованные и перегружаемые в потомках виртуальные члены. Ну и где это здесь? Соответственно необходимость потомков не прослеживается. А дефолтный конструктор в protectd блокирует только создание экземпляров без использования параметров конструктора и, соответственно, создание динамических массивов безымянных экземпляров. Да и то за исключением локальных экземпляров в методах и операторах-членов как данного класса, так и потомков. Ну и деструктор в protecte ограничивает область видимости экземпляров методами и операторами-членами данного класса и его потомков. Добавлено через 1 минуту Добавлено через 6 минут
0
|
|||||||||||||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||
| 14.12.2014, 15:33 | ||||
|
Я говорил, что только сам noncopyable не имеет смысла создавать просто так, отдельно от всех. Это разные вещи. Класс, который ты от него наследуешь имеет смысл создавать, его-то конструкторы никто не помещает в private\protected. Класс noncopyable создается один раз. Это как библиотечная сущность, вспомогательная. Никаких иерархий из них делать не предлагается и не предполагается. Он используется с целью навесить некопируемость на своего конкретного потомка. Это пример того, как в С++ иногда используется наследование вне контекста ООП. Ссылки хоть посмотри, там же все это объясняется. Не спорь, разберись. Добавлено через 42 секунды
0
|
||||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 14.12.2014, 15:34 [ТС] | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 14.12.2014, 15:35 | |||
|
Добавлено через 39 секунд
0
|
|||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||
| 14.12.2014, 15:41 [ТС] | ||||
|
Добавлено через 2 минуты
0
|
||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||
| 14.12.2014, 15:44 | |||||
|
Правильно этот класс называется mix-in. Я тебе давал выше ссылку. Вот определение оттуда:
0
|
|||||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 14.12.2014, 15:44 [ТС] | |||
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 14.12.2014, 15:48 | ||
|
0
|
||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||||||||||||||||||
| 14.12.2014, 15:54 [ТС] | |||||||||||||||||||||||
|
Это:
Добавлено через 2 минуты
0
|
|||||||||||||||||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 14.12.2014, 16:04 | |
|
taras atavin, спор ни о чем.
В С++ у абстрактного класса конкретное определение. Абстрактный класс предполагает, что он интерфейс, либо может им быть. В нашем случае наследование - закрытое, следовательно это синтаксический вариант включения, а не каноническое ООП наследование - это раз. И никакого интерфейса noncopyable не предоставляет - это два. С++ никогда не реализовывал ООП в чистом виде с идеологической точки зрения. Оно всегда было чуть свое - это три. Иными словами, раз уж мы в разделе по С++, то общаться нужно в терминах С++, дабы не путать себя и собеседников. Добавлено через 1 минуту taras atavin, мы ушли от темы. Что-то осталось непонятным?
0
|
|
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 14.12.2014, 16:11 [ТС] | |||
|
Добавлено через 1 минуту
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 14.12.2014, 16:16 | |||
|
Добавлено через 49 секунд Теперь ты на шаг ближе к осознанию того, что о частных случаях в общем виде рассуждать неконструктивно.
0
|
|||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 14.12.2014, 16:16 [ТС] | ||
|
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 14.12.2014, 16:18 | |
|
taras atavin, По первоначальной теме есть что добавить?
0
|
|
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 14.12.2014, 16:18 [ТС] | ||
|
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 14.12.2014, 16:22 | |||
|
Повторю вопрос.
0
|
|||
| 14.12.2014, 16:22 | |
|
Как запретить копирование данных с диска Как запретить копирование текста из RichtextBox в буфер обмена? Как запретить заход одного объекта на другой? Как запретить создание объекта в таком случае
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|