Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
考虑在堆上实例化的任何 QObject。如果它没有父级,并且没有任何东西调用它,它是否应该出于任何原因进入QObjectPrivate::deleteChildren()?
QObjectPrivate::deleteChildren()
但当然,删除与破坏是正交的。如果该对象被破坏,它当然会删除它的子对象。有些东西很可能会在对象上调用析构函数而不从堆中释放它。那是你的代码,或者是编译器生成的代码,顺便说一下,Qt 中没有随机破坏QObjects 的“魔法”。
QObject
如果对象的生命周期由合适的智能指针(例如QScopedPointer、QSharedPointer、std::unique_ptr或std::shared_ptr)管理,则智能指针将破坏对象,而您无需显式执行任何操作。
QScopedPointer
QSharedPointer
std::unique_ptr
std::shared_ptr