8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
|
|||||||||||
1 | |||||||||||
Передача существующего объекта вместо создания нового31.07.2014, 02:08. Показов 1818. Ответов 39
Метки нет (Все метки)
Есть класс Word. Он неизменяемый: все методы - константные.
Учитывая это я пытаюсь создать класс таким образом чтобы вместо создания нового объекта Word передавался уже созданный и сохраненный объект с такими-же параметрами. Такой способ, к примеру, используется в Java с классом String (String pool in Java). Пример кода, что я имею в виду.
0
|
31.07.2014, 02:08 | |
Ответы с готовыми решениями:
39
Добавление нового и/или обновление существующего свойства объекта Перезаполнить элемент вместо создания нового Перегрузка оператора без создания нового объекта Создание нового окна существующего класса |
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
|
|
31.07.2014, 05:29 | 21 |
попробуем подойти по другому
отвлечемся от программирования вот есть класс человек, описание его сущностей и есть объект Winorun, и с ним нужно работать очень просто во все справочники забиваем этот объект, выдаем ему паспорт но как создать еще один объект Winorun причем он должен полностью повторять первый, т.е создать клон Но он должен и занимать тоже время и пространство что и первый противоречий не видишь?
0
|
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
|
|
31.07.2014, 05:31 | 22 |
как ты из конструктора вернёшь ссылку?
0
|
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
|
|
31.07.2014, 05:32 | 23 |
Не понял зачем создавать новый когда При попытки создать еще одного Winorun, говорим место сужествования текущего
0
|
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
|
|
31.07.2014, 05:33 | 24 |
Winorun, как ты из конструктора вернёшь ссылку?
0
|
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
|
|
31.07.2014, 05:37 | 25 |
Либо я плохо обьесняю либо вы не понимаете.
Добавлено через 1 минуту я бы код кинул, но смогу это сделать не раньше обеда
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
|
|
31.07.2014, 05:39 | 26 |
заведи статический массив указателей а лучше список или вектор и сравнивай,
но создавать объект ты можешь только динамически, и придется переопределять new т.е вызывается оператор new проверяет есть ли такой объект в списке, если есть возвращает указатель если нет выделяет память и вызывает конструктор но что то мне подсказывает что от такой оптимизации только хуже будет например как узнать что такой объект существует? по какому критерию? только по содержимому строки ? или какой то идентификатор?
0
|
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
|
|
31.07.2014, 05:42 | 28 |
alsav22, тебе ValeryS, подробно и обстоятельно расписал
0
|
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
|
|
31.07.2014, 05:46 | 30 |
заведи статический массив указателей а лучше список или вектор и сравнивай,
но создавать объект ты можешь только динамически, и придется переопределять new т.е вызывается оператор new проверяет есть ли такой объект в списке, если есть возвращает указатель если нет выделяет память и вызывает конструктор
0
|
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
|
|
31.07.2014, 05:47 | 32 |
Ты меня тролишь чтоЛИ
0
|
31.07.2014, 05:59 | 33 |
Сообщение было отмечено QGuest как решение
Решение
QGuest, вам тут советуют что-то не то. Или вы не понимаете, чего хотите . Если вы хотите класс строк как в Джаве: неизменяемые, и чтобы код
работал, то это одно (так и назовите тему - хочу строки как в Джава. Кстати, будет хорошее сравнение Джавы и плюсов). Однако даже Джава может вам гарантировать идентичность строк только в пределе одного class-файла (знатоки Java, подправьте, если я не прав). Если вам просто кажется, что так будет быстрее - это другое (скорее всего нет, не будет - как минимум время будет уходить на поиск строки в глобальном пуле объектов. И при миллионе строк создание новой пустой строки будет занимать кучу времени. Оно вам надо?). Подумайте, как вся эта радость будет работать в многопоточной среде (ещё одни расходы на отслеживание одинаковости строк в разных потоках). Как я понял, вам вполне подойдёт строка со счётчиком ссылок. Пример реализации описан у Страуструпа (примерно глава 7, пункт 6 во втором издании и далее).
1
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
|
||||||
31.07.2014, 06:11 | 34 | |||||
не-е-ет
именно проверяем, если нет создаем я этим давно не занимался, да и мысль только сейчас пришла не сформировалась полностью, по этому распишу коряво полу Си полу псевдо код
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
|
|||||||||||
31.07.2014, 07:23 | 38 | ||||||||||
разумеется нет
проверка типа такой
alsav22, ты меня так спрашиваешь как будто я уже решение предложил А я предложил только идею задачка интересная но сейчас совершенно нет времени через несколько дней, если раньше не решат, попробую реализовать Добавлено через 1 минуту правильней сказать проверить есть ли объект с таким содержимым
1
|
alsav22
|
31.07.2014, 08:36
#39
|
0
|
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
|
||||||
31.07.2014, 10:48 | 40 | |||||
Как и обещал выкладываю код (Необходимо добавить деструктор). Через new сильно геморойно.
1
|
31.07.2014, 10:48 | |
31.07.2014, 10:48 | |
Помогаю со студенческими работами здесь
40
Создание нового компонента на основе существующего (наследование); Создание нового tabsheet с копированием элементов существующего Настройка нового домена на папку существующего сайта Ошибка при создании нового проекта/открытии существующего Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |