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标准)。
注1:C++ 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;
}
评论(0)