zoukankan      html  css  js  c++  java
  • Qt内存回收机制

    参考视频: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

    运行,进行测试:

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

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

  • 相关阅读:
    [Leetcode] Convert Sorted List to Binary Search Tree
    [Leetcode] Sqrt(x)
    [Leetcode] Pow(x, n)
    [Leetcode] Balanced Binary Tree
    [Leetcode] Convert Sorted Array to Binary Search Tree
    [Leetcode] Construct Binary Tree from Preorder and Inorder Traversal
    [Leetcode] Remove Element
    [Leetcode] Letter Combinations of a Phone Number
    [Leetcode] Generate Parentheses
    [Leetcode] Valid Parentheses
  • 原文地址:https://www.cnblogs.com/mrlayfolk/p/13127062.html
Copyright © 2011-2022 走看看