从Qt简单的例子理解析构

看下面一段代码

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

}

MainWindow::~MainWindow()
{
    delete ui;
}
  • 在构造函数后面的”冒号”: 是初始化作用,在这里初始化了继承QMainWindow的构造函数的参数。
  • ui(new Ui::MainWindow), 是创建ui的实例。
  • 两个分别是构造函数与析构函数

下面言归正传,说一说析构

析构函数

析构函数和构造函数是一对。构造函数用于创建对象,而析构函数是用来撤销对象。
简单的说:一个对象出生的时候,使用构造函数,死掉的时候,使用析构函数。

如果我们写的类是一个没有那么复杂的类,我们可以不需要写析构函数。如果一个类只要有这些情况:打开文件、动态分配内存、连接数据库。
简单的说:就是只要构造函数里面有了 new 这个关键词,我们就需要自己手动编写析构函数

析构函数何时被调用

当对象被释放的时候,对象会被析构调用。
Qt内存自动释放
Qt内存自动释放有两个前提条件:

  • 必须是QObject的派生类
  • 必须指定了parent对象

即:Qt 中 父亲被删除的时候会自动销毁他的孩子。 所以。如果New出来的并且没有父亲。那么则需要手动删除它。。比如ui(new Ui::MainWindow) ,没有指定父,也不是QObject的派生类,需要手动释放

猜你喜欢

转载自blog.csdn.net/osean_li/article/details/80469180