标签:
《Effective C++》在资源管理一节提到了智能指针,智能指针中最著名的当属auto_ptr和shared_ptr。本文主要研究两者的实现。
auto_ptr的实现:
template<class T> class auto_ptr { private: T *ap; public: explicit auto_ptr(T *ptr = 0):ap(ptr){} ~auto_ptr(){delete ap;} auto_ptr(auto_ptr &rhs):ap(rhs.release()){} auto_ptr& operator=(auto_ptr &rhs) { reset(rhs.release()); return *this; } T* operator*() const {return *ap;} T* operator->() const {return ap;} T* get() const {return ap;} T* release() { T *tmp = ap; ap = 0; return tmp; } void reset(T *ptr = 0) { if (ptr != ap) { delete ap; ap = ptr; } } };
参考资料:http://www.kafka0102.com/2010/02/62.html
auto_ptr的缺点:
1. 复制或赋值行为不正常,因此不能置于容器中。
2. 不能用于管理动态分配的数组。
标签:
原文地址:http://www.cnblogs.com/gattaca/p/4549528.html