在生成对象的时候如果指定了Parent的话,这个对象在Parent析构的时候会被自动删除,比如
class MyDialog : public QDialog {
public:
MyDialog();
~MyDialog();
QLabel* m_Test;
}
MyDialog::MyDialog()
: QDialog(NULL, Qt::CustomizeWindowHint | Qt::WindowTitleHint
| Qt::WindowSystemMenuHint | Qt::MSWindowsFixedSizeDialogHint),
{
m_Test = new QLable(tr("Testing", this);
}
MyDialog::~MyDialog() {
delete m_Test;
}
从代码来看,m_Test因为指定了当前Dialog为Parent,所以它会在当前对话框析构的时候被delete掉。这个步骤应该是QDialog或者其父类的析构函数中完成的。
但为什么MyDialog的析构中再一次delete m_Test的时候,却不会出错呢?
反过来,先delete m_Test,再由QDialog的父类析构再delete一次也是一样。
如果一个指针被delete两次是一定要抛出异常的啊?!