std::unique_ptr<int> p1(new int);
std::unique_ptr<int> p2(new int);
p2=p1;
在这里 p1 似乎不再“唯一”,因为 p2 也引用它
这是合法的c++吗?
unique_ptr 是否有 copy_semantics ?
如果不是,并且它只有移动语义,则 p1 在将其分配给 p2 后是否设置为 NULL?
EDIT:
好的,正确的版本是
p2=std::move(p1)
据此,在这次分配之后,p1无效?而与auto_ptr的区别就在这里?我猜显式指定所有权转移比隐式指定所有权转移更安全,就像 auto_ptr 的情况一样
std::unique_ptr 是不可分配和不可复制的。您需要使用 std::move();
so
p1 = std::move(p2);
看一看了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)