-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


goto vs break & continue

Понедельник, 13 Июля 2020 г. 21:53 + в цитатник
Wound:
Цитата Qraizer @
Тем, что в случае Qt это не обязательно ошибка. Передавая ресурс в нутря Qt, ты передаёшь ему владение, согласно договорённости с Qt, тогда как присваивая поинтер на хип сырому указателю, никому ничего не передаёшь и по-прежнему сам отвечаешь за энтот поинтер. Сравни:

Так я и говорю - смешение семантики языка с логикой выходит.

Когда ты пишешь вон как с std::shared_ptr - то в данном случае у тебя во первых разные типы данных с лева и с права.
Попробуй тогда уж написать по аналогии с QT:
    std::shared_ptr* pI = new std::shared_ptr();


Потому как с std::shared_ptr - сразу видно, что тут используется враппер, а когда ты пишешь:
    QPushButton *B = new QPushButton("Акей");

Тут из этого вообще никак не очевидно что ты пишешь враппер. Я во первых бы обернул это по привычке в std::unique_ptr, ну или на крайняк дальше по коду вызвал бы -> delete B;, а если дальше бы по коду оно упало у меня, то справедливо бы обматерил разрабов QT.
А в данном случае что происходит? Оно внутри делает delete *this?
Во первых это вообще не очевидно, во вторых - пописав годик вот на таком, ты по привычке везде будешь так писать, забыв вызвать delete, да и RAII тебе в таком случае нафиг не нужно, ты же привык что у тебя память сама освобождается. По мне так очень стремная практика. Даже в COM - и то юзаются врапперы.

https://forum.sources.ru/index.php?showtopic=362619&view=findpost&p=3834204

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку