首页 > 代码库 > 智能指针的模板,用来管理动态分配的内存
智能指针的模板,用来管理动态分配的内存
#ifndef SMARTPTR_HPP #define SMARTPTR_HPP #include <stddef.h> template <typename T> class SmartPtr{ public: SmartPtr(T *type = NULL); void resetPtr(T *type); const T *getPtr()const; operator bool() const{ return ptr_ == NULL; } ~SmartPtr(); T &operator*(); const T &operator*()const; T *operator->(); const T *operator->()const; private: SmartPtr(const SmartPtr &); void operator=(const SmartPtr &); T *ptr_; }; template <typename T> inline SmartPtr<T>::SmartPtr(T *type) :ptr_(type) {} template <typename T> inline void SmartPtr<T>::resetPtr(T *type) { if(ptr_ != type){ if(ptr_ != NULL){ delete ptr_; } ptr_ = type; } } template <typename T> inline const T *SmartPtr<T>::getPtr() const { return ptr_; } template <typename T> inline SmartPtr<T>::~SmartPtr() { if(ptr_ != NULL){ delete ptr_; } } template <typename T> inline T &SmartPtr<T>::operator*() { return *ptr_; } template <typename T> inline const T &SmartPtr<T>::operator*() const { return *ptr_; } template <typename T> inline T *SmartPtr<T>::operator->() { return ptr_; } template <typename T> inline const T *SmartPtr<T>::operator->() const { return ptr_; } #endif /*SMARTPTR_H*/
智能指针的模板,用来管理动态分配的内存
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。