析构函数与Qt对象树的析构顺序
2024-01-03 18:37:02
form.cpp?
#include "form2.h"
#include "ui_form2.h"
#include <QDebug>
Form2::Form2(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form2)
{
ui->setupUi(this);
}
Form2::~Form2()
{
qDebug()<<"~Form2";
delete ui;
}
widget.cpp?
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include "try1.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
f=new Form2(this);
}
Widget::~Widget()
{
qDebug()<<"~Widget";
delete f;
qDebug()<<"---";
delete ui;
}
?main.cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
结果:(f通过delete f进行析构)
~Widget
~Form2
---
另一种写法:?
widget.cpp
Widget::~Widget()
{
qDebug()<<"~Widget";
qDebug()<<"---";
delete ui;
}
结果:(f通过对象树进行析构)
~Widget
---
~Form2
分析:先调用了Widget的析构函数。然后会通过对象树进行析构!?
文章来源:https://blog.csdn.net/weixin_51883798/article/details/135365118
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!