智能指针比普通指针具有的优点:
1.获取一个空指针时,智能指针将给你一个简单调试断言而不是内存错误
2.在引用计数对象中你从不必调用AddRef()或者Release()方法(实际上如果你调用了,会有一些严重的错误)
3.智能指针可以很好地工作在容器类内,一个智能指针数组代替普通指针消除了各种生命周期管理问题,你从不需要关心指针后面对象的释放,数组的行为看起来像包含真的C++对象
4.使用智能指针,你一般不需要像普通指针那样经常定义“对象所属关系”(谁要负责删除对象,等等...)
智能指针的缺点:
1.性能:拷贝和赋值智能指针时包含调用AddRef()和/或Release()方法,间接引用一个智能指针包含一个检查智能指针所包含的对象指针是否有效的断言检查。由此产生的性能问题一般被忽略,但在内部循环你必须意识到这一点。
2.原本要销毁的对象还一直存在着:由于使用智能指针管理对象,只有当最后一个客户放弃了所有权后对象才会被删除,对象可能比预期存在更长时间。往往这是一个错误点。Nebula3将提示你有关任何的引用计数泄露。
原文:
[声明]:限于译者水平,文中难免错漏之处,欢迎各位网友批评指正;
没有评论:
发表评论