一个智能指针模板的实现及应用
智能指针提供了一种安全的处理对象指针及正确的回收对象指针内存的方法,本文给出了一个智能指针模板类,并给出了一个简单的实例
- ////////////////////////////SmartPoint.h///////////////////////////////////
- #ifndef SMARTPOINT_H_
- #define SMARTPOINT_H_
- template <class T>
- class mem_ptr
- {
- T* m_p;
- mem_ptr(T&);
- public:
- mem_ptr() : m_p(0) {}
- mem_ptr(T* p) : m_p(p) {}
- ~mem_ptr() { delete m_p; }
- inline T& operator*() const { return *m_p; }
- inline T* operator->() const { return m_p; }
- inline operator T*()const { return m_p; }
- inline const mem_ptr<T>& operator=(T* p) { set(p); return *this; }
- inline T* set(T* p) { delete m_p; m_p = p; return m_p; }
- inline T* get() const { return m_p; }
- inline void release() { m_p = 0; }
- inline bool empty() const { return m_p == 0; }
- };
- #endif
- ///////////////////////TestSmart.h///////////////////////////////////////
- #include <iostream>
- using namespace std;
- class A
- {
- public:
- A(int a, int b) : m_a(a), m_b(b)
- {
- }
- void Show()
- {
- cout<<m_a<<endl;
- cout<<m_b<<endl;
- }
- private:
- int m_a;
- int m_b;
- };
- ///////////////////////////main.cpp///////////////////////////////////////
- #include "SmartPoint.h"
- #include "TestSmart.h"
- void main()
- {
- mem_ptr<A> m_A = new A(1, 2);
- m_A->Show();
- // 程序退出时调用m_A的析构函数释放对象A的内存
- }