C++智能指针的简单实现
2015-04-20 11:14
633 查看
把C++ Primer第四版中智能指针的示例代码改为了类模板,并增加了几个函数。
[code]template <typename T> class U_Ptr { template <typename T> friend class lxlshared_ptr; T *tp; size_t use; U_Ptr(T *p) : tp(p), use(1) {} ~U_Ptr() {delete tp;} }; template <typename T> class lxlshared_ptr { public: lxlshared_ptr(T *p) : ptr(new U_Ptr<T>(p)) {} lxlshared_ptr(const lxlshared_ptr &orig) : ptr(orig.ptr) {++ptr->use;} lxlshared_ptr& operator= (const lxlshared_ptr&); ~lxlshared_ptr() { if (--ptr->use == 0) delete ptr; } long use_count() const {return ptr->use;} T& operator* () {return *ptr->tp;} T* operator-> () {return ptr->tp;} friend bool operator== (const lxlshared_ptr &lhs, const lxlshared_ptr &rhs) {return lhs.ptr == rhs.ptr;} friend bool operator!= (const lxlshared_ptr &lhs, const lxlshared_ptr &rhs) {return !(lhs == rhs);} private: U_Ptr<T> *ptr; }; template <typename T> lxlshared_ptr<T>& lxlshared_ptr<T>::operator= (const lxlshared_ptr<T> &rhs) { ++rhs.ptr->use; if (--ptr->use == 0) delete ptr; ptr = rhs.ptr; return *this; }
相关文章推荐
- C++ 几种智能指针的简单实现
- C++智能指针及其简单实现
- C++中智能指针的工作原理和简单实现
- C++智能指针及其简单实现
- C++智能指针,指针容器原理及简单实现(auto_ptr,scoped_ptr,ptr_vector).
- C++中智能指针的工作原理和简单实现
- 非常经典的C++ 引用计数技术及智能指针的简单实现
- C++智能指针及其简单实现
- C++ 拷贝控制和资源管理,智能指针的简单实现
- C++ — 智能指针的简单实现以及循环引用问题
- 用c++简单实现智能指针(转)
- C++智能指针,指针容器原理及简单实现(auto_ptr,scoped_ptr,ptr_vector).
- c++ 智能指针的简单实现
- C++中智能指针的工作原理和简单实现
- 用c++简单实现智能指针(转)
- [8]C++智能指针的简单实现
- C++ 引用计数技术及智能指针的简单实现
- C++ 智能指针简单实现
- C++中智能指针的工作原理和简单实现
- C++ 引用计数技术及智能指针的简单实现