C++11:19unique_ptr独占的智能指针
标签:type 其他 一个 ble size 所有权 原来 智能 移动
19、unique_ptr独占的智能指针
0、课前秀
1、unique_ptr
- 不允许通过赋值将一个unique_ptr赋值给另外一个unique_ptr。
unique_ptr myPtr(new T);
unique_ptr myOhterPtr = myPtr; //错误:不能复制
- 可以通过函数返回给其他的unique_ptr,还可以通过std::move来转移到其他的unique_ptr,这样它本身就不再拥有原来指针的所有权了。
unique_ptr myPtr(new T); //Okay
unique_ptr myOhterPtr = std::move(myPtr);//Okay,
unique_ptr ptr = myPtr; //错误,只能移动,不可复制
2、用make_unique方法来创建智能指针
- unique_ptr不像shared_ptr那样可以通过make_shared方法来创建智能指针。
//支持普通指针
template inline
typename enable_if::value, unique_ptr>::type
make_unique(Args&&... args)
{
return unique_ptr(new T(std::forward(args)...));
}
//支持动态数组
template inline
typename enable_if::value && extent::value==0,unique_ptr>::type
make_unique(size_t size)
{
typedef typename remove_extent::type U;
return unique_ptr(new U[size]());
}
//过滤掉定长数组的情况
template
typename enable_if::value != 0,void>::type
make_unique(Args&&...) = delete;
ReadMe
- 20200522工作期间看了会儿,感觉内容不如看《CPP Primer》第5版的一章节呢,没有get好,留着后期再复习吧。
C++11:19unique_ptr独占的智能指针
标签:type 其他 一个 ble size 所有权 原来 智能 移动
原文地址:https://www.cnblogs.com/fewolflion/p/12937891.html
评论