笔记

  用过Qt的朋友都知道,在使用Qt构造类的时候,可以随意new一个你想要的任何对象,如果该对象的父类是QObject派生的类,或者QObject子类派生,那可以不用管理类的释放操作,new出来的对象将会自动添加到QT的对象树当中。

这就是QT的内存回收机制——对象树;


231332.png

对象模型(对象树)

我们在创建对象的时候,都需要指定一个parent对象指针,这个parent的作用如下:

  • QObiect是以对象树的形式组织起来的

    • 当创建一个QObiect对象时,QObiect的析构函数会接收一个QObiect指针作为参数,此参数就是paent,即父对象指针;
      这句话的解释是:在创建QObiect对象时,可以提供一个其父对象,此时我们创建的这个QObiect对象会自动添加到其父对象的children()(子类)列表中;
    • 当父对象析构的时候,这个列表中的所有对象也会被析构。(这里的父对象并不是继承意义上的父类!)
      这种机制在GUI程序设计中非常便利,例如,当一个按钮有一个QShortcut(快捷键)对象作为其子对象。当我们删除按钮的时候,这个快捷键理应被删除,这是合理的。

待更

最后修改:2020 年 05 月 15 日
您的支持就是我持续更新的动力!