|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.03.2015, 14:34 | #11 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
вторая версия из сообщения #3 - счетчик кривой.
Он не сможет шариться. На выброс. |
08.03.2015, 15:46 | #12 |
Заблокирован
Регистрация: 02.08.2014
Сообщений: 30
|
|
08.03.2015, 18:17 | #13 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Могу вам показать дизайн моего собственного велосипеда.
Он по крайней мере рабочий. ПРИМЕЧАНИЕ: этот велосипед - только на выброс. я изготавливал его ещё будучи новичком, и делал это исключительно в образовательных целях. С точки зрения дизайна использования - он не обладает мощностью своего стандартного аналога, и вообще несколько наивен. С точки зрения реализации - не расширяемый. Есть мелкие огрехи. Он функционален, но не эффективен. Принцип хранения счетчика объектов можно было бы сделать более оптимально. В общем, этот код иллюстрирует принцип работы шаристого смарта, но и только лишь. Стиль написания кода у меня тогда ещё не выработался, поэтому - без слез не глянешь)) Итак: Код:
|
08.03.2015, 18:17 | #14 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
(продолжение. все в одном большом h файле)
Код:
|
08.03.2015, 18:24 | #15 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
FIDE, вам нужно обратить внимание,
что счетчик ссылок - тоже указатель. Вам нужно спросить себя: почему так? Почему он указатель? Ответ на этот вопрос - это главное, что нужно понять в устройстве шаред-поинтера. Все остальное - на самом деле мелочи. дизайнерская косметика. |
08.03.2015, 21:18 | #16 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Тестировать умные указатели нужно не когда всё хорошо работает, а когда сыпятся исключено и код писал идиот, ничего не знающий про указатели
|
10.03.2015, 00:25 | #17 |
Заблокирован
Регистрация: 02.08.2014
Сообщений: 30
|
Я кажется понимаю:нужно хранить кол-во копий указателя и когда оно равно 0 удалять объект. Но вопрос, как это делать? Указатели-то могут указывать хоть на 200 разных объектов...Вроде и не трудно но до меня не дойдет как это делать...
|
10.03.2015, 02:01 | #18 | |
Заблокирован
Регистрация: 02.08.2014
Сообщений: 30
|
Цитата:
|
|
10.03.2015, 02:08 | #19 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
|
10.03.2015, 02:12 | #20 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
TSharedPointer<int> smart = new int(10); он аллоцирует счетчик в куче: mp_CounterLink=new int(1); куда ложит единичку. когда он расшаривается с другими смартами, то значение по этому указателю увеличивается. и там уже двоечка. при этом другому смарту он просто указатель нацеливает на тот же адрес. таким образом уже два смарта поинтера знают где находится их общий счетчик. поэтому любой из них может изменить значение этого счетчика, и это изменение "заметит" его коллега. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Правильна ли такая реализация списка из указателей на базовый класс? | Archet | Общие вопросы C/C++ | 14 | 18.01.2012 16:08 |
АТД: Реализация списка с использованием указателей | Suslik963 | Помощь студентам | 1 | 17.11.2010 10:06 |
Ищу умных людей по с++ | Maver1k[Kiev] | Свободное общение | 3 | 24.03.2010 10:22 |
прошу помощи у умных людей... | lesimel | C++ Builder | 12 | 21.12.2009 09:09 |