智能指针的模板,用来管理动态分配的内存
2014-07-22 21:47
447 查看
#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*/
相关文章推荐
- 智能指针模板,要管理动态分配的内存
- 用于管理new动态分配对象的智能指针
- 动态内存管理和智能指针 2.0 -- shared_ptr
- 智能指针(上)-----动态管理内存问题,auto_ptr的模拟实现
- 浅谈C++普通指针和智能指针管理动态内存的陷阱
- 动态内存和智能指针
- C++动态内存与智能指针(一)
- C++动态分配三级指针的内存与释放
- 字符内存动态分配管理类(CAutoMem)
- C++中的动态内存与智能指针
- (十二)动态内存与智能指针
- 递归、内存的动态分配、指针
- C++中的动态内存与智能指针
- 利用模版类实现指针内存的分配管理
- 动态内存与智能指针
- C和指针 (pointers on C)——第十一章:动态内存分配(下)习题
- char ** str的使用方法:动态内存分配-------二维指针
- SQL服务器内存有两种基本管理方法:动态分配和静态分配
- 一个类似auto_ptr<>用于动态分配数组的智能指针
- 动态内存与智能指针