QObjectPrivate :: deleteChildren是否曾在堆对象上调用它,如果它不是父对象的话?

时间:2013-10-28 16:28:33

标签: qt

考虑在堆上实例化的任何QObject。如果它不是父级,并且没有任何内容可以删除它,那么它是否应该以任何理由输入QObjectPrivate::deleteChildren()

1 个答案:

答案 0 :(得分:0)

但当然,删除与破坏是正交的。如果该对象被破坏,它当然会删除它的孩子。有些东西可能会调用对象上的析构函数而不从堆中释放它。那就是你的代码,或编译器生成的代码,顺便说一句,Qt中没有“魔法”来随机破坏QObject

如果对象的生命周期由合适的智能指针(例如QScopedPointerQSharedPointerstd::unique_ptrstd::shared_ptr)管理,则智能指针将破坏对象,没有你明确做任何事情。