C、C++智能指针

 

这篇文章主要来源于:codeguru网站的一篇文章:A TR1 tutorial:smart pointer  (详细介绍了C++的智能指针,尤其是shared_ptr)。

众所周知,在 TR1 之前,C++标准库中的智能指针只有auto_ptr,但由于它的【排他所有权模式】(exclusive ownership model)导致了许多问题,为解决,C++TR1中引入了 boost 开源库中的智能指针:shared_ptr 和 weak_ptr 并使之成为了标准库的一部分(C++11标准)。

注1C++ TR1 即 C++ Technical Report 1 是 ISO/IEC TR 19768, C++ Library Extensions(函数库扩充)的一般名称,它是针对 C++ 标准库的第一次扩展。

注2:C++最新标准:C++11已 将智能指针:shared_ptr、weak_ptr收录为标准库中,即对应为:std::shared_ptr, std::weak_ptr,相应的头文件:<memory>(相比TR1:头文件:<tr1/memory>).

注3若读者编译器不支持C++11标准,则编译时:1.将头文件由<memory> 改为 <tr1/memory>; 2.将namespace由 std:: 改为 std::tr1 .

#include "stdafx.h"
#include "iostream"

using namespace std;

template<class T>
class SmartPtr
{
public:
    T* m_pPtr;
public:
    SmartPtr(T* Ptr){m_pPtr = Ptr;}

    T& operator * ()
    {
        //cout << this->m_pPtr << endl;
        return *this->m_pPtr;
    }

    T* operator -> ()
    {
        return m_pPtr;
    }

    ~SmartPtr()
    {
        delete m_pPtr;
        m_pPtr = NULL;
    }
    
};

int _tmain(int argc, _TCHAR* argv[])
{
  SmartPtr<int> sp(new int);

  *sp = 9;


  cout << *sp << endl;;


  return 0;
}

 

 

posted @ 2014-04-29 14:04  奥特曼-小贺  阅读(174)  评论(0编辑  收藏  举报