template <class T> class SmartPtr{ public: SmartPtr(T* p=0): pointee(p){ } ~SmartPtr(){ delete pointee; } SmartPtr(SmartPtr<T> & rhs):pointee(rhs.pointee){ rhs.pointee=0;} SmartPtr<T> & operator=(const SmartPtr<T> & rhs) { if(this != &rhs) { delete pointee; pointee=rhs.pointee; rhs.pointee=0; } return *this; } T & operator*(){ return *pointee;} T * operator->(){return pointee; } //返回指针 private: T* pointee; };
时间: 2024-04-03 08:35:32 浏览: 66
类成员访问操作符“->”的重载-c++课件之操作符重载
这是一个简单的智能指针类模板,用于管理动态分配的内存。它可以自动释放指向对象的内存,避免了内存泄漏的问题。其中包含了构造函数、析构函数、拷贝构造函数、赋值运算符重载、解引用运算符重载和箭头运算符重载。通过重载解引用运算符和箭头运算符,可以使智能指针的使用方式与指针一样方便。同时,通过限制拷贝和赋值操作,可以避免多个智能指针同时管理同一个动态分配的内存块,从而保证了内存的安全性。
阅读全文