Qt对象数的概念
Qt中的QObject会用对象树来管理自己,那么什么是对象树呢?
因为QObject类就有一个私有变量QList<QObject*>,专门存储这个类的子孙后代们。比如创建一个QOject并指定父对象就会把自己加入到父对象的childre()列表中,也就是QList<QObejct*>
好处:
当父对象被析构时,子对象也会被析构。简化了内存回收机制
对象树的问题
例:
QApplication a(argc, argv);
QPushButton button;
Widget w;
button.setParent(&w);
button.setText("崩溃之源");
w.show();
return a.exec();
如果子对象由于系统机制自动释放,会存在问题,当父对象释放时,会让子对象由有二次释放。