我正在使用普通指针进行编程,但是我听说过诸如Boost之类的实现智能指针的库。我还看到,在Ogre3D渲染引擎中,共享指针得到了广泛的使用。这三个之间到底有什么区别,我应该坚持只使用它们中的一种吗?
3 回答
慕森卡
TA贡献1806条经验 获得超8个赞
术语“智能指针” 包括共享指针,自动指针,锁定指针等。您的意思是说自动指针(更模糊地称为“拥有指针”),而不是智能指针。
哑指针(T *)永远不是最佳解决方案。它们使您可以进行显式的内存管理,这是冗长的,容易出错的,有时几乎是不可能的。但更重要的是,它们并不表示您的意图。
自动指针将销毁的指针删除。对于数组,更喜欢像vector和deque这样的封装。对于其他对象,很少需要将它们存储在堆上-只需使用局部变量和对象组合即可。返回堆指针的函数仍然需要自动指针,例如工厂和多态返回。
当指向该指针的最后一个共享指针被破坏时,共享指针将删除该指针。当您需要一个不费吹灰之力的开放式存储方案时,此功能很有用,该方案的预期寿命和所有权可能会因情况而异。由于需要保留(原子)计数器,因此它们比自动指针要慢一些。有人开玩笑地说,共享指针适用于无法设计系统的人-自行判断。
对于共享指针的必要替代,也可以查找弱指针。
- 3 回答
- 0 关注
- 565 浏览
添加回答
举报
0/150
提交
取消