8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
|
|||||||||||
1 | |||||||||||
Передача существующего объекта вместо создания нового31.07.2014, 02:08. Показов 1961. Ответов 39
Метки нет (Все метки)
Есть класс Word. Он неизменяемый: все методы - константные.
Учитывая это я пытаюсь создать класс таким образом чтобы вместо создания нового объекта Word передавался уже созданный и сохраненный объект с такими-же параметрами. Такой способ, к примеру, используется в Java с классом String (String pool in Java). Пример кода, что я имею в виду.
0
|
31.07.2014, 02:08 | |
Ответы с готовыми решениями:
39
Добавление нового и/или обновление существующего свойства объекта Перезаполнить элемент вместо создания нового Перегрузка оператора без создания нового объекта Создание нового окна существующего класса |
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
|
|||||||||||
31.07.2014, 02:40 | 2 | ||||||||||
Даже не знаю, единственное что приходит в голову, завести статическую переменную указатель на этот класс, в начале её инициализировать значением NULL, а потом в конструкторе проверять, если указатель равен NULL, тогда задать свойства объекта, а указателю дать адрес this, а при последующем вызове конструктора, т.к. указатель уже не будет NULL, возвращать адрес, который он хранит. Только зачем вам это надо?
Добавлено через 5 минут ну что-то типа такого: .h
0
|
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
|
|
31.07.2014, 02:46 [ТС] | 3 |
0
|
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
|
|
31.07.2014, 02:58 | 4 |
Да, согласен, сглупил. Но я всё равно не могу понять зачем вам такое надо. Что вам мешает не создавать новый объект, а просто отдавать адрес уже существующего?
0
|
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
|
|
31.07.2014, 03:25 [ТС] | 5 |
Объектов Word будет много и повторятся он будут довольно часто. Так вот хочу сделать такую оптимизацию) Не уверен что что-то выиграю с этого, но все же...
0
|
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
|
|
31.07.2014, 03:41 | 6 |
ну так, создай объект Word word;
и где надо отдавай его адрес, Word* newWord = &word; почему не подходит? или ссылку - как удобней
0
|
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
|
|
31.07.2014, 03:53 [ТС] | 7 |
таким способом как-раз и неудобно.
У меня этих объектов будет много. Я ж не смогу в каждый метод где я их использую передавать массив уже прежде созданных вордов. Это неправильно.
0
|
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
|
|
31.07.2014, 03:58 | 8 |
ну так, создай объект Word word;
и где надо отдавай его адрес, Word* newWord = &word; почему не подходит? это почему? не нравится передавать в методы нужные тебе объекты? ну ладно, объяви этот массив глобально тогда покажи примеры этих методов и почему туда нельзя передавать адреса или ссылки уже созданных объектов
0
|
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
|
|
31.07.2014, 04:09 [ТС] | 9 |
Я неправильно выразился. Я конечно могу их туда передать но так делать неправильно.
Я же говорю, что я просто хотел сделать эдакую оптимизацию, чтобы не было повторов и лишнего забивания памяти. Просто сам Word должен управлять своими экземплярами, а не я внешне.
0
|
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
|
|
31.07.2014, 04:22 | 10 |
Я понял, что ты имел введу, и именно это выражение меня и смутило:
Почему не правильно передавать в метод существующий объект? Ссылки для того и придумали, чтобы передавать существующие объекты и Приведи пример пожалуйста, когда этого делать нельзя, я правда не могу тебя понять. Ну если тебе религия не позволяет этого делать, такой ещё выход могу предложить: создай ещё один класс, который будет хранить статическую переменную ссылку или указатель, и статический метод, который будет проверять, если ссылка уже указывает на какой-то объект, то вернуть его, если нет, то создать объект и вернуть.
0
|
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
|
|
31.07.2014, 04:33 [ТС] | 11 |
Да какой тут может быть пример? Любой же код где будет Word использоваться. И что, мне в КАЖДЫЙ метод массив передавать, на случай, если там окажется нужная мне копия Word? Глупо же.
0
|
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
|
|
31.07.2014, 04:47 | 12 |
Глупо не знать, в каком методе, тебе может понадобиться экземпляр класса. Как ты проектируешь программу?
Нужен существующий объект в конкретном методе? - создай соответствующий прототип и передавай туда уже созданный объект - никаких тебе лишних вызовов конструктора и лишнего выделения памяти. Либо, альтернативы в виде глобального объекта или того, что я тебе написал в предыдущем сообщении.
0
|
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
|
|
31.07.2014, 04:54 [ТС] | 13 |
В том той дело, что именно существующий экземпляр мне может быть мне и не нужен. Я могу создать новый ТАКОЙ-ЖЕ из существующих данных. Но я бы хотел, чтобы класс Word при попытке создания нового экземпляра подставлял вместо него ТАКОЙ-ЖЕ существующий.
0
|
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
|
|
31.07.2014, 05:07 | 14 |
Ты меня что-то запутал
Тебе нужен существующий класс в методах? Добавлено через 2 минуты это не возможно и ты мне сам же напомнил почему. По крайней мере такое нельзя сделать в конструкторе. Покажи пример метода, в котором ты хочешь создать объект, но при этом тебе вернули уже созданый
0
|
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
|
|
31.07.2014, 05:10 [ТС] | 15 |
0
|
Модератор
8954 / 6720 / 921
Регистрация: 14.02.2011
Сообщений: 23,717
|
|
31.07.2014, 05:15 | 16 |
что то я не понял ТАКОЙ-ЖЕ это не ЭТОТ-ЖЕ
следовательно создается другой объект и копируются данные но судя по всему тебе нужен один объект тогда такой выход вижу: сделать объект глобальным
0
|
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
|
|
31.07.2014, 05:17 | 17 |
Вот именно. Создание объекта - это всегда вызов конструктора, как ты собираешься адрес создаваемого объекта поменять?
И ещё раз
0
|
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
|
|
31.07.2014, 05:19 | 18 |
конструктор с видимостью на все обьекты, а там поиск отсортированного значения. В чем проблема?
0
|
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
|
|
31.07.2014, 05:27 | 20 |
В класе масив указателей на свои обьекты , в конструкторе ищешь существует обьект или нет, если сущ-т возвращаешь сылку, нет создаещь новый.
0
|
31.07.2014, 05:27 | |
31.07.2014, 05:27 | |
Помогаю со студенческими работами здесь
20
Создание нового компонента на основе существующего (наследование); Создание нового tabsheet с копированием элементов существующего Настройка нового домена на папку существующего сайта Ошибка при создании нового проекта/открытии существующего Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
[Golang] 121. Best Time to Buy and Sell Stock
alhaos 28.01.2025
В этой задаче мы получаем слайс целых чисел, которые означают цену акции в разные моменты времени, и должны вернуть максимально возможную прибыль от купли продажи акции.
/ / . . .
|
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование
Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
|
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы
В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
|
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире
В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
|
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации
В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
|
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии
В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
|
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации
В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
|
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику
Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
|
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику
В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
|
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера
Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
|
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды
В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
|
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике
В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
|