我正在使用普通指針進行編程,但是我聽說過諸如Boost之類的實現智能指針的庫。我還看到,在Ogre3D渲染引擎中,共享指針得到了廣泛的使用。這三個之間到底有什么區別,我應該堅持只使用它們中的一種嗎?
3 回答

慕森卡
TA貢獻1806條經驗 獲得超8個贊
術語“智能指針” 包括共享指針,自動指針,鎖定指針等。您的意思是說自動指針(更模糊地稱為“擁有指針”),而不是智能指針。
啞指針(T *)永遠不是最佳解決方案。它們使您可以進行顯式的內存管理,這是冗長的,容易出錯的,有時幾乎是不可能的。但更重要的是,它們并不表示您的意圖。
自動指針將銷毀的指針刪除。對于數組,更喜歡像vector和deque這樣的封裝。對于其他對象,很少需要將它們存儲在堆上-只需使用局部變量和對象組合即可。返回堆指針的函數仍然需要自動指針,例如工廠和多態返回。
當指向該指針的最后一個共享指針被破壞時,共享指針將刪除該指針。當您需要一個不費吹灰之力的開放式存儲方案時,此功能很有用,該方案的預期壽命和所有權可能會因情況而異。由于需要保留(原子)計數器,因此它們比自動指針要慢一些。有人開玩笑地說,共享指針適用于無法設計系統的人-自行判斷。
對于共享指針的必要替代,也可以查找弱指針。
- 3 回答
- 0 關注
- 614 瀏覽
添加回答
舉報
0/150
提交
取消