#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*/
智能指针的模板,用来管理动态分配的内存
最新推荐文章于 2019-08-18 23:49:25 发布