Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
BRE |
13.8.2010, 8:27
Сообщение
#41
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Алексей1153, я вовсе не занудствую.
Ты предлагаешь свой код человеку, который учиться. Этот код избыточен. Для чего учить человека писать избыточный код? У тебя это вошло в привычку, но не обязательно (и, наверное, не правильно), что бы это вошло в его привычку. Отсюда и мой комментарий. |
|
|
|
|
Алексей1153 |
13.8.2010, 8:34
Сообщение
#42
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
BRE, дык, я ж ничего. У всех свой стиль, он прочитает всё, что мы тут понаписали - и выберет теперь свой стиль. Правильно рассуждаю ? ))
|
|
|
|
|
DEADHUNT |
13.8.2010, 10:25
Сообщение
#43
|
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2
|
Цитата(Алексей1153 @ 13.8.2010, 7:45) Link Не забывай также удалить через delete (как вариант, можно сделать оболочку для указателя, чтобы не приходилось вызывать delete вручную зачем делать то, что уже сделали в C++0x/boost/Qt? причём данная реализация не совсем корректна (нету конструктора копирования, нету конструктора перемещения(для C++0x), и прочие мелочи) Сообщение отредактировал DEADHUNT - 13.8.2010, 10:25 |
|
|
|
|
Алексей1153 |
13.8.2010, 10:39
Сообщение
#44
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
DEADHUNT, я вообще про C++ речь веду. А где, кстати, в Qt это есть?
А про "не совсем корректность" - так вектору не нужен конструктор копирования и прочие мелочи, там оператор присваивания только нужен. Всё остальное - "избыточность кода" © BRE Ненужные препирательства всё это. Я подсказал путь, а решений - туча, каждому нравится своё |
|
|
|
|
DEADHUNT |
13.8.2010, 14:00
Сообщение
#45
|
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2
|
Цитата(Алексей1153 @ 13.8.2010, 11:39) Link А где, кстати, в Qt это есть? QScopedPointer/QSharedPointer Цитата(Алексей1153 @ 13.8.2010, 11:39) Link А про "не совсем корректность" - так вектору не нужен конструктор копирования и прочие мелочи, там оператор присваивания только нужен. посмотри стандарт, там есть требования к элементам контейнера - конструктор по умолчанию, конструктор копирования, деструктор, etc. в твоем примере получается что ты не реализовал конструктор копирования, компилятор создал его(но не так как требует семантика умного указателя). Сообщение отредактировал DEADHUNT - 13.8.2010, 14:00 |
|
|
|
|
Litkevich Yuriy |
13.8.2010, 15:53
Сообщение
#46
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(Алексей1153 @ 13.8.2010, 12:05) Link смотри работу operator= оператор - член класса, т.к. мы в деструкторе, то объект собрался умирать вместе с его операторами. BRE прав, тут ты переборщил с осторожностью.хотя у меня такое тоже встречается, но тому причиной простой копипаст. |
|
|
|
|
Алексей1153 |
13.8.2010, 16:08
Сообщение
#47
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
а где сей стандарт глядеть?
А насчёт корректности работы - оно работает, одного только оператора присваивания достаточно. Правда, у меня в проекте std::vector используется, но работает без ошибок - очень хорошо и длительно тестировано |
|
|
|
|
DEADHUNT |
13.8.2010, 16:47
Сообщение
#48
|
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2
|
Link
насчёт работы это как раз из-за твоего зануления указателя в деструкторе, потому-что деструктор вызывается несколько раз вместо одного, попробуй сделать так в своём классе: или так и увидешь где используется конструктор копирования. Сообщение отредактировал DEADHUNT - 13.8.2010, 16:48 |
|
|
|
|
Litkevich Yuriy |
13.8.2010, 17:33
Сообщение
#49
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
DEADHUNT, не мог бы ты пояснить такую строчку:
Цитата(DEADHUNT @ 13.8.2010, 20:47) Link smart_ptr(const smart_ptr &) = delete; ?
|
|
|
|
|
Алексей1153 |
13.8.2010, 17:54
Сообщение
#50
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
Синтаксис я тоже не понял
|
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 27.12.2025, 1:18 |