用过Qt的朋友都知道,在使用Qt构造类的时候,可以随意new
一个你想要的任何对象,如果该对象的父类是QObject
派生的类,或者QObject
子类派生,那可以不用管理类的释放操作,new
出来的对象将会自动添加到QT的对象树当中。
这就是QT的内存回收机制
——对象树;
对象模型(对象树)
我们在创建对象的时候,都需要指定一个parent
对象指针,这个parent
的作用如下:
QObiect
是以对象树的形式组织起来的- 当创建一个
QObiect
对象时,QObiect
的析构函数会接收一个QObiect
指针作为参数,此参数就是paent
,即父对象指针;
这句话的解释是:在创建QObiect
对象时,可以提供一个其父对象,此时我们创建的这个QObiect
对象会自动添加到其父对象的children()
(子类)列表中; - 当父对象析构的时候,这个列表中的所有对象也会被析构。(这里的父对象并不是继承意义上的父类!)
这种机制在GUI程序设计中非常便利,例如,当一个按钮有一个QShortcut
(快捷键)对象作为其子对象。当我们删除按钮的时候,这个快捷键理应被删除,这是合理的。
- 当创建一个
待更
版权属于:编码书生
本文链接:https://codess.cc/archives/392.html
所有原创文章采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
除特别注明,您可以自由的转载和修改,但请务必注明文章来源且不可用于商业目的。