一、概述
unique_ptr用于管理对象,实现对象的自动释放,它不能被拷贝或赋值,保证了指针只被它管理,提供了接口转移拥有权。
二、使用示例
#pragma once
#include <memory>
#include <string>
#include <iostream>
using namespace std;
class PtrClass
{
private:
string s;
public:
PtrClass(string s)
{
this->s = s;
cout << "create " << s << endl;
}
~PtrClass()
{
cout << "dispose " << s << endl;
}
};
class UniquePtrTest
{
public:
void doTest()
{
shared_ptr<PtrClass> sharedPtr1(new PtrClass("shared1"));
unique_ptr<PtrClass> uniquePtr1(new PtrClass("unique1"));
unique_ptr<PtrClass> uniquePtr2;
uniquePtr2.reset(new PtrClass("unique2"));
uniquePtr2.swap(uniquePtr1); //交换关系
//unique_ptr<PtrClass> uniquePtr3 = uniquePtr1; //会编译错