Форум программистов, компьютерный форум CyberForum.ru

Реализация собственного умного укзателя - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Описать класс "Конус" http://www.cyberforum.ru/cpp-beginners/thread642334.html
Язык С 1. Опишите класс "Конус" Данные класса: координаты центра основания, радиус основания, высота. Конструкторы класса: конструктор по умолчанию, конструктор конуса с центром в начале координат, конструктор произвольного конуса. 2. Определите методы: ввод конуса, вывод на экран, определение площади поверхности, определение объёма конуса. 3.Объявите конус с центром в начале координат и...
C++ деббагинг и отладка c++ С чего начать,о отладки вообще ничего не знаю и о дебагинге. http://www.cyberforum.ru/cpp-beginners/thread642303.html
C++ Исключения в классах
Здравствуйте. Какими средствами правильней всего сделать обработку исключений в классах? /* например, эта функция */ int SomeClass::someFunc( int some_arg ) { return some_arg * 18 } /* для нормальной работы должна получать числа от 0 до 42. Как реагировать на остальное? */
C++ как сделать консольное окно поверх всех окон
сабж было бы очень удобно дебагить если можно было бы это сделать заранее спасибо
C++ [c++] fgets не могу понять почему это не работает http://www.cyberforum.ru/cpp-beginners/thread642263.html
Вообщем на диске C:\ лежит 3 файла 1 Файл test.txt 2 Файл 1.dll 3 Файл 2.dll в test.txt записано: 1.dll 2.dll
C++ Отобразить указанное число строк со звездочками, с одной звездочкой в первой строке, двумя — во второй и т.д Вот задача: Напишите программу, использующую вложенные циклы, которая запрашивает у пользователя значение количества строк для отображения. Затем она должна отобразить указанное число строк со звездочками, с одной звездочкой в первой строке, двумя — во второй и т.д: В каждой строке звездочкам должны предшествовать точки — в таком количестве, чтобы общее число символов в каждой строке... подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
25.08.2012, 12:13     Реализация собственного умного укзателя
> Что я делаю неправильно?
Неправильно понимаете суть указателя со счётчиком ссылок.

Суть его в том, что при создании смарт-поинтера выделяется место под объект и под этот самый счётчик. Указатель на этот кусок памяти сохраняется в смарт-поинтере и он знает, где там лежит счётчик, а где объект.

При создании счётчик равен единице. Конструктор копирования тупо копирует в новый смартпоинтер этот указатель (и ничего не делает с объектом). То же самое делает оператор присваивания. Оба они вдобавок увеличивают на единичку счётчик (аккуратно с присваиванием самому себе, там этого делать не надо).

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

А хорошая реализация ещё делает это быстро и является thread-safe.
 
Текущее время: 21:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru