![]() |
|
Модераторы: bsa |
![]()
|
|
| Hassel |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.1.2011 Где: Москва Репутация: нет Всего: нет |
Написал свою реализацию умного указателя (в чисто учебных целях).
Хотелось разобраться в теме. Буду очень рад комментариям. Честно говоря меня смущает проверка на "нулевость" указателя ( is_null() ). Как-то не красиво получилось.
|
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Hassel
Ну что же, поехали. 1. будет утечка памяти при использовании оператора присваивания. 2. тут было бы правильнее ссылаться на NULL вместо создание объекта.
3. Функция is_null лучше заменить оператором !. 4. нет перегрузок для константой версии объекта, да и вообще нет константный функций, хотя многие из них ничего не модифицируют. ну и всякие мелочи типа не использования списка инициализации, еще например эти 2 строки можно написать проще
дальше лень смотреть.. Это сообщение отредактировал(а) azesmcar - 20.6.2011, 21:45 |
||||
|
|||||
| Hassel |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.1.2011 Где: Москва Репутация: нет Всего: нет |
Ага, понял. Там не только оператор присваивания, там и конструктор копирования такой-же.
Вот так правильно?
И конструктор по умолчанию
Большое спасибо. |
||||
|
|||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Почему оператор == не констовый?
Это сообщение отредактировал(а) borisbn - 21.6.2011, 06:37 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Hassel
Дублирование кода говорит об очевидном
пора выделять в отдельную функцию. конструктор копирования содержит ошибки. Как минимум декрементирование неинициализорванного счетчика, ну и не работает как должен и константные функции так и не появились. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Оператор присваивания делается так:
Это сообщение отредактировал(а) bsa - 21.6.2011, 13:30 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |