auto_ptr scoped_ptr shared_ptr weak_ptr unique_ptr
2012-12-26 14:15 Scott Guthrie Liu 阅读(480) 评论(0) 编辑 收藏 举报1. auto_ptr C++98 出现,已经被废了,可以所有权的自动转让,不能作为容器元素。
2. scoped_ptr boost中类似auto_ptr只希望在本作用域里使用,不希望被转让。拷贝构造函数和赋值构造函数都为private。
3. shared_ptr C++11中出现,引用计数型指针,各种赞美啊。make_shared、allocate_shared的使用避免了new泛滥
实际增加了很小的计数的空间。多线程不完美。
4. weak_ptr被设计为与shared_ptr共同工作,可以从一个shared_ptr或者另一个weak_ptr对象构造,获得资源的观测权。但weak_ptr没有共享资源,它的构造不会引起指针引用计数的增加。同样,在weak_ptr析构时也不会导致引用计数的减少,它只是一个静静的观察者
5. unique_ptr 配合move()使用, 确定只是唯一拥有权时候,使用unique_ptr能够降低相应的性能开销
20121226 16:45
个人目前理解,shared_array scoped_array 使用 new[]
这个时候要先看是否设计有问题,尽量用shared_ptr和容器实现