C++编码规范之智能指针 1.智能指针(smart pointer) 如果确实需要使用智能指针的话,scoped_ptr完全可以胜任。在非常特殊的情况下,例如对STL容器中对象,你应该只使用std::tr1::shared_ptr,任何情况下都不要使用auto_ptr. 智能指针看上去是指针,其实是附加了语义的对象。以scoped_ptr为例,scoped_ptr被销毁时,删除除了它所指向的对象。shared_ptr也是如此而且shared_ptr实现了引用计数从而只有当它所指向的最后一个对象被销毁时,指针才会被删除。 一般来说我们倾向于设计对象隶属明确的代码,最明确的对象隶属是根本不使用指针,直接将对象作为一个域或局部变量使用.另一种极端是引用计数不属于任何对象,这样设计的问题是容易导致循环引用或其他导致对象无法删除的诡异条件,而且在每一次拷贝或赋值时原子操作都会很慢。 |
|
来自: dongtongtong > 《C 编码规范》