Название: Деструктор по умолчанию Отправлено: Astrologer от Сентябрь 24, 2010, 18:57 Всем привет. Когда мы создаем новый класс деструктор по умолчанию не создается.
Например есть такой заголовок: Код: #ifndef QWIZARDREPORT_H Код: void QWizardReport::createWidgets() Название: Re: Деструктор по умолчанию Отправлено: Авварон от Сентябрь 24, 2010, 19:09 нет
Название: Re: Деструктор по умолчанию Отправлено: Astrologer от Сентябрь 24, 2010, 19:11 То есть явным образом определять деструктор и вызывать delete для *? А для остальных что делать? Или просто определить
Код: QTreeWidget::~QTreeWidget(){} Название: Re: Деструктор по умолчанию Отправлено: Astrologer от Сентябрь 24, 2010, 19:25 Из книги Бланшет:
Когда мы создаем объект и он имеет родительский объект, то к списку дочерних элементов родителя добавляется и этот объект. При удалении родителя все дочерние элементы будут удалены. Это как понимать? Название: Re: Деструктор по умолчанию Отправлено: Sancho_s_rancho от Сентябрь 24, 2010, 19:26 То есть явным образом определять деструктор и вызывать delete для *? А для остальных что делать? Или просто определить Если вы при создании объекта указываете ему родителя QObject или его наследника, то при уничтожении родителя объекты будут уничтожены. Для всех остальных delete в деструкторе или пользуйтесь умными указателями.Код: QTreeWidget::~QTreeWidget(){} Название: Re: Деструктор по умолчанию Отправлено: Astrologer от Сентябрь 24, 2010, 19:29 Всем привет. Когда мы создаем новый класс деструктор по умолчанию не создается. Например есть такой заголовок: Код: #ifndef QWIZARDREPORT_H QWizard наследник QObject так? То есть все удалится? Название: Re: Деструктор по умолчанию Отправлено: Sancho_s_rancho от Сентябрь 24, 2010, 19:29 Из книги Бланшет: если QPushButton *btn = new QPushButton(this); //когда этот this будет удаляться, то удалиться и кнопка. Когда мы создаем объект и он имеет родительский объект, то к списку дочерних элементов родителя добавляется и этот объект. При удалении родителя все дочерние элементы будут удалены. Это как понимать? если QPushButton *btn = new QPushButton();//надо руками вызывать delete. Название: Re: Деструктор по умолчанию Отправлено: Авварон от Сентябрь 24, 2010, 19:29 не объявить деструктор == написать QTreeWidget::~QTreeWidget(){}
используйте механизм парент/чайлд Название: Re: Деструктор по умолчанию Отправлено: Astrologer от Сентябрь 24, 2010, 19:30 Я же привел код. :) Про механизм можно поподробнее?
Название: Re: Деструктор по умолчанию Отправлено: Alex Custov от Сентябрь 24, 2010, 19:34 Я же привел код. :) Про механизм можно поподробнее? при создании виджетов указывайте родителя, это уже написано выше. Название: Re: Деструктор по умолчанию Отправлено: Astrologer от Сентябрь 24, 2010, 19:41 Код из Qt:
Код: #include <QtGui> Название: Re: Деструктор по умолчанию Отправлено: Sancho_s_rancho от Сентябрь 24, 2010, 19:46 vbox и groupbox назначаются родители не при создании, а через addWidget, но они назначаются. Обо всем этом написано в документации.
Название: Re: Деструктор по умолчанию Отправлено: Astrologer от Сентябрь 24, 2010, 23:56 Спасибо за ответы. Но почему нельзя просто сказать - нужно сделать так то и так то, это удалится потому то и потому то?) Я знаю что все есть в документации. Но я обращаюсь к участникам форума для возможности разделить практический опыт и разобраться в тонкостях)
Название: Re: Деструктор по умолчанию Отправлено: Astrologer от Сентябрь 25, 2010, 08:49 Может кто нибудь в простых словах объяснить когда объект создается на стеке, в кучу или еще где нибудь или дать хороший источник где все это описывается?
Название: Re: Деструктор по умолчанию Отправлено: BRE от Сентябрь 25, 2010, 09:02 Может кто нибудь в простых словах объяснить когда объект создается на стеке, в кучу или еще где нибудь или дать хороший источник где все это описывается? Это можно почитать в любой книге по С++.Название: Re: Деструктор по умолчанию Отправлено: Пантер от Сентябрь 25, 2010, 12:57 Может кто нибудь в простых словах объяснить когда объект создается на стеке, в кучу или еще где нибудь или дать хороший источник где все это описывается? Это можно почитать в любой книге по С++. |