初始化
std::unique_ptr是一个独占型的智能指针,它不允许其他的智能指针共享其内部的指针,可以通过构造函数初始化一个独占智能指针,但是不允许通过赋值将一个unique_ptr赋值个另一个unique_ptr。
int main()
{
//通过构造函数初始化对象
unique_ptr<int> ptr1(new int(10));
//报错
unique_ptr<int> ptr2 = ptr1;
return 0;
}
unqiue_ptr不允许被复制,但是可以通过函数返回给其他的unique_ptr,还可以通过std::move()转移给其他的unique_ptr。还是一个unique_ptr独占一个地址。
使用reset方法可以让unique_ptr解除对原始内存的管理,也可以用来初始化一个独占的智能指针。
#include<iostream>
#include<memory>
using namespace std;
int main()
{
unique_ptr<int> ptr1(new in(10));
unique_ptr<int> ptr2;
ptr1.reset(); //解除对原始内存的管理
ptr2.reset(new int(250)); //重新指定智能指针管理的原始内存
return 0;
}
如果想要获取独占智能指针管理的原始地址,可以调用get() 方法
int main()
{
unique_ptr<int> ptr1(new int(10));
unique_ptr<int> ptr2 = move(ptr1);
ptr2.reset(new int(250));
cout<<*ptr2.get()<<endl; //得到内存地址中存储的实际数值250
return 0;
}