内存回收机制+字体乱码

F4快速进行切换
内存回收机制:https://blog.****.net/dashumak/article/details/78237553
构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。
  以C++语言为例,析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数,它也不进行任何操作。所以许多简单的类中没有用显式的析构函数。
内存回收机制+字体乱码
new之后如果不释放空间不会调用delete函数,QT会自动释放(析构)

内存回收机制+字体乱码
#include "mywidget.h"
#include<QPushButton>
#include"mybutton.h"

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    /*对于父窗口(主窗口),坐标系统相对于屏幕而言
     * 原点:相对于屏幕左上角
     * x:往右递增
     * y:往下递增
   */
    move(500,100);
    /*子窗口,坐标系统相对于父窗口而言
     * 原点:相对于窗口空白区域左上角(不包括边框)
     * x:往右递增
     * y:往下递增
   */

    //下面创建的两个按钮都是动态分配空间,所以要释放,否则会导致内存泄漏
    QPushButton *b1=new QPushButton(this);
    b1->move(100,100);
    b1->setText("^_^");
    b1->resize(200,100);

    QPushButton *b2=new QPushButton(b1);
    b2->move(10,10);
    b2->setText("@[email protected]");

    MyButton *b3 = new MyButton(this);
    b3->setText("123");

    //前提条件  1)指定父对象后 2)直接或间接继承与QObject
    //子对象如果是动态分配空间的new,不需要手动释放delete
    //系统会自动释放
}

MyWidget::~MyWidget()
{

}

内存回收机制+字体乱码
内存回收机制+字体乱码

如果不出现中文,
内存回收机制+字体乱码

内存回收机制+字体乱码