std::move
转换成shared_ptr类型
如果 unique_ptr 为右值,就可以将它赋值给 shared_ptr。因为 shared_ptr 包含一个显式构造函数,可用于将右值 unqiue_ptr 转换为 shared_ptr,shared_ptr 将接管原来归 unique_ptr 所拥有的对象。
#include <iostream>
#include <memory>
using namespace std;
auto myfunc()
{
return unique_ptr<string>(new string("hello")); // 临时对象都是右值
}
int main()
{
shared_ptr<string> sp = myfunc(); // 这里系统会为shared_ptr创建控制块
return 0;
}
#include <iostream>
#include <memory>
using namespace std;
int main()
{
unique_ptr<string> up(new string("hello"));
shared_ptr<string> sp = std::move(up);
return 0;
}
===========================================================================================================================================================================================================================