智能指针分为3类
std::unique_ptr —— single ownership 独享指针对象
std::shared_ptr —— shared ownership 共享指针对象
std::weak_ptr —— temp/no ownership 用的比较少(与shared_ptr一起使用)
unique_ptr用法
推荐使用第三种或者第四种方式创建unique_ptr
unique_ptr不能使用'='方式赋值,'='方式在C++中类似拷贝
e2 = std::move(e1)方式,会移交e1的使用权给e2,e1不在拥有指针对象变为空对象
在使用函数时,把e1当作参数传参时,应该使用foo(std::move(e1));的方式传值,如果直接传e1相当与'='赋值,是不被允许的
unique_ptr使用例子