首页 > 其他 > 详细

Qt内存回收机制

时间:2020-06-14 21:51:51      阅读:42      评论:0      收藏:0      [点我收藏+]

参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=16

Qt中内存的回收是自己完成的,实验中,我们自定义一个按钮,通过重写析构函数来观察现象。

新建工程后,再添加自定义的按钮之后,有如下文件:

技术分享图片

mybutton.h和mybutton.cpp是我们自定义的文件,里面实现了我们自定义的按钮类。

mybutton.h文件中的代码:

技术分享图片
 1 #ifndef MYBUTTON_H
 2 #define MYBUTTON_H
 3 
 4 //#include <QWidget>
 5 #include <QPushButton>
 6 
 7 class mybutton : public QPushButton
 8 {
 9     Q_OBJECT
10 public:
11     explicit mybutton(QWidget *parent = nullptr);
12 //重写一个析构函数
13     ~mybutton();
14 
15 signals:
16 
17 public slots:
18 };
19 
20 #endif // MYBUTTON_H
View Code

mybutton.cpp文件中的代码:

技术分享图片
 1 #include "mybutton.h"
 2 #include <QDebug>
 3 
 4 //mybutton::mybutton(QWidget *parent) : QPushButton(parent)
 5 //QPushButton(parent):用于给基类构造函数传参
 6 mybutton::mybutton(QWidget *parent) : QPushButton(parent)
 7 {
 8 
 9 }
10 
11 mybutton::~mybutton()
12 {
13     qDebug("按钮被析构");
14 }
View Code

widget.h文件就是自动生成的代码,没做改动,就不贴出来了。

widget.cpp文件的代码如下:

技术分享图片
 1 #include "widget.h"
 2 #include "mybutton.h"
 3 
 4 Widget::Widget(QWidget *parent)
 5     : QWidget(parent)
 6 {
 7     //1)指定父对象后 2)直接或间接继承于QObject
 8     //子对象如果是动态分配空间的,不需要手动释放delete
 9     //系统会自动释放
10     mybutton *b = new mybutton(this);
11     b->move(100, 100);
12     b->setText("button");
13     b->resize(200, 100);
14 }
15 
16 Widget::~Widget()
17 {
18 
19 }
View Code

运行,进行测试:

技术分享图片

我们把窗口关闭,会出现如下打印:

技术分享图片

 可以看出,内存被自动回收了。

Qt内存回收机制

原文:https://www.cnblogs.com/mrlayfolk/p/13127062.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!