【发布时间】:2015-02-05 21:48:27
【问题描述】:
我被引导理解,对已移动的 std::unique_ptr 的内容调用成员函数是未定义的行为。我的问题是:如果我在 unique_ptr 上调用 .get() 并 然后 移动它,原来的 .get() 指针会继续指向原始唯一指针的内容吗?
换句话说,
std::unique_ptr<A> a = ...
A* a_ptr = a.get();
std::unique_ptr<A> a2 = std::move(a);
// Does *a_ptr == *a2?
我认为确实如此,但我想确定一下。
('contents' 可能是错误的词。我的意思是当你取消引用指针时得到的数据)
【问题讨论】:
-
该指针后面的对象没有被破坏。并且对象的地址不能改变。因此,您拥有的地址必须仍然有效。
-
@drescherjm 不,移动后,第一个 unique_ptr 不拥有任何东西。
-
我现在明白了。我错误地认为在移动中使用了 a_ptr(这对我来说没有意义 - 必须仔细阅读)。
标签: c++ pointers move-semantics unique-ptr