1
當我在main()
的末尾調用Pool::releaseAllObjects()
方法時,我在調用一個C++池分配器來銷燬其中的所有對象。但如果有人意外地在對象上調用了刪除,則池將以隨機順序銷燬對象。 我的問題是如何在main()
末尾的析構函數的隨機調用順序可以「有害」?C++可以改變析構函數的調用順序是否有害?
當我在main()
的末尾調用Pool::releaseAllObjects()
方法時,我在調用一個C++池分配器來銷燬其中的所有對象。但如果有人意外地在對象上調用了刪除,則池將以隨機順序銷燬對象。 我的問題是如何在main()
末尾的析構函數的隨機調用順序可以「有害」?C++可以改變析構函數的調用順序是否有害?
只要對構造函數體無關緊要,順序並不重要。如果這些對象互相引用,並且在析構函數中調用裁判的方法,那麼顯然與銷燬順序無關。否則你是安全的。
如果析構函數全部正確寫入,它不可能是一個問題。 – EJP
@EJP請你詳細說明如何正確和不正確地寫入析構函數?即什麼使析構錯誤地寫入? – exTrace101
析構函數不應該依賴於其他對象的生命。破壞通常與施工相反。 –