C、C++智能指针

时间:2014-04-30 18:01:06   收藏:0   阅读:478
 

这篇文章主要来源于: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 .

bubuko.com,布布扣
#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;
}

 
bubuko.com,布布扣

 

C、C++智能指针,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!