c++11的unique_ptr智能指针:
一旦创建,就指向那块内存,以后再也不能让其它的智能指针指向同一块内存。
这个指针实现比较简单,只需定义一个类的实例时,自己类内部删除拷贝构造函数和删除赋值运算符重载函数就可以了。
#include <iostream>
using namespace std;
template<typename T>
class munique_ptr{
T *ptr;
public:
munique_ptr(T *_ptr=NULL):ptr(_ptr){}
~munique_ptr()
{
delete ptr;
}
//删除拷贝构造函数
munique_ptr(const munique_ptr &r)=delete;
//删除赋值运算符重载函数
munique_ptr &operator=(const munique_ptr &r)=delete;
T operator*()
{
return *ptr;
}
};
int main(void)
{
munique_ptr<double> ptr(new double(3.14));
cout<<*ptr<<endl;
munique_ptr<double> ptr1=ptr;
munique_ptr<double> ptr2;
ptr2=ptr;
}
因为是unique_ptr指针,唯一的,如果存在两个指针指向同一块空间,那么就会得一下运行结果: