智能指针模板,要管理动态分配的内存
2015-10-27 09:50
429 查看
#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*/
相关文章推荐
- 【转】adobe acrobat pro修改pdf文字
- [Android Tips] 14. Using Proguard with Android without obfuscation
- decorator的class方式
- WebService中获取request对象一例
- Android开发最佳实践(胡凯版本)
- 51单片机与hc06蓝牙模块
- ActionSheet 显示在 UIWindow,弹出又消失了解决办法
- 关于SSH框架的Struts过滤器错误
- 收缩日志 dump transaction 语句错误(SQL 2008)
- C++类成员冒号初始化以及构造函数内赋值
- CentOS编译PHP5过程中常见错误信息的解决方法
- weblogic集群
- ECShop完美去版权
- 40款 Javascript common plugins
- 上海深圳交易所股票代码编码原则
- sessionStorage和localstorage,globalstorage 的区别
- 怎么清除SVN密码,以及重置eclipse中svn插件密码
- 设计模式学习笔记(一)——面向对象设计模式与原则
- Python基础语法
- 上海公园地图接口分享