Мммм)))
Это вообще очень опасная конструкция, которая очень часто приводит к многим проблемам с расстрелами памяти.
Ничего тут нету плохого
А для Qt есть альтернатива? Даже интересно стало.
Да ладно. Объект полностью конструируется только после окончания работы конструктора и очень многие часто это не осознают и начинают себе всё подряд отстреливать.
Я имел в виду не альтернативу Qt, а альтернативу new QLabel(this) для Qt.
Там только ссылка на объект нужна
ну у Qt есть свои умные ptr, но я хз как они с parent-child вместе работают
И вот как только ссылку на недокоснтруированный объект получает июнь самое веселье и начинается.
Вот я про то же.
Да. А если там нью в списке инициализации, то синтаксис по отлову эксепшенов получается просто закачаешься. Всем рекомендую ознакомиться.
Насколько я помню, там вызывается delete в момент уничтожения parent, так что никаких альтернатив нет.
в qt как правило проще контролировать время жизни иерархией QObject'ов
Ещё раз там не важен объект по ссылке важна сама ссылка на объект на объекте в виде qobject, А эта часть этого объекта уже сконструирована в данный момент
есть исключения когда это неудобно и приводит к "утечке" - создаются куча QObject и ожидают когда удалится parent. правда вместо delete есть ->deleteLater()
альтернатива - не давать им родителей и юзать те же умные указатели
Выбор этого пути в QT давным давно и есть худшее в ней. Но да примеров всемозможных умных указателей тогда еще не было, вот и тянут оное с времен 30-летней давности.
на родителей в Qt много что завязано. с виджетами не прокатит
тогда и правда deleteLater выручит)
иногда получается из это сделать что то совсем неплохое, но да, тут можно пострелять себе в ноги
Что многие постоянно и делают уже 30 лет или сколько там.
Обсуждают сегодня