2009-09-25 4 views
1

Im новый для библиотеки Qt, и я проходил демонстрации. Я наткнулся на этот класс без деструктора ....Qt library destructor Вопрос

это CPP файл http://doc.trolltech.com/4.5/demos-mainwindow-mainwindow-cpp.html

и вот файл .h http://doc.trolltech.com/4.5/demos-mainwindow-mainwindow-h.html

конструктор использует новый оператор, но класс Безразлично У меня есть деструктор. Я что-то упускаю?

ответ

12

Да, вы есть. Qt предоставляет отношения родитель-потомок. Когда объект QObject удален, он автоматически удаляет все его дочерние элементы.

В приведенной ниже строке QTextEdit создается с помощью этого указателя в качестве родителя.

center = new QTextEdit(this); 

Итак, когда родительский (MainWindow) удален, центр также автоматически удаляется. Взгляните на QObject documentation.

+0

Также я заметил, что если я не распределяю центр с помощью 'operator new()', но я помещаю его как экземпляр класса объекта, я не получаю двукратное повреждение. Как это возможно? - Получил мой ответ: http://doc.trolltech.com/4.5/qpointer.html – Dacav