2015-03-31 14 views

回答

0

最明顯的例子是如果班級管理自己的一生。允許靜態分配會導致雙倍空閒。

1

這是通常在類實例管理自己的生命週期時完成的,例如,他們會訂閱一些異步的事件。如果實例在事件到達之前被銷燬,則事件調度程序將使用一個野指針並導致未定義的行爲。

+1

例如,一類使用[shared_from_this](http://en.cppreference.com/w/cpp/memory/enable_shared_from_this/shared_from_this)創建異步完成處理程序要求以特定方式創建類實例。 – 2015-03-31 18:24:17

+0

@DavidSchwartz:的確如此。引用計數和私有構造函數/析構函數經常在一起發現。 – 2015-03-31 18:25:34

0

通常是因爲程序員想要隨時控制活着的對象。有效的使用情況是:

  • Singleton模式

  • 保持所有的隱含對象列表活着,以促進所有這些對象的操作

  • 重用那些已經活着對象

最後一個目標通常也需要引用計數,以便能夠在不需要任何東西時銷燬對象更多,並要求對象在邏輯上不變。這樣做的一個用法是實現字符串的性能(它允許字符串通過比較它們的指針進行比較!)。

0

一個原因可能是您希望將創建的特定類型控制爲調用應用程序不需要知道的幾種可能子類型之一。

例如,您可能想獲得一個Connection下載從URL資源和URL將確定哪些Connection特定類型的返回 - HTTPConnectionHTTPSConnectionFTPConection等等

相關問題