【发布时间】:2020-05-26 05:40:33
【问题描述】:
正如下面的代码,我不明白为什么!p 是合法的,因为std::unique<T> 没有成员函数'operator !()'。
由于std::cout << p.get() << std::endl; 是合法的,我认为p 是一个对象,而不是一个指针。所以我很困惑。
有人可以帮我一个忙吗?
std::cout << "unique ownership semantics demo\n";
{
auto p = std::make_unique<D>();
std::cout << p.get() << std::endl; //I think p is an object, not an pointer.
auto q = pass_through(std::move(p));
assert(!p); //Why it is legial?
q->bar();
}
【问题讨论】:
标签: c++ unique-ptr