【发布时间】:2020-06-14 09:59:24
【问题描述】:
我对 r-value 引用和移动语义非常陌生,但我读过的教程有这样的态度“既然临时是一个构造完美的对象,通常会被复制和销毁,为什么不延长它的生命周期并移动它周围?”
所以我正在想象这样一个场景:
class Foo
{
Foo m_foo; // Could also be a reference or a unique_ptr of any sort
public:
Foo() {}
Foo(Foo &&v_foo) { /*initialize m_foo using v_foo.*/ }
};
int main()
{
auto foo = std::make_unique<Foo>( Foo() );
return 1;
}
这样的事情可能吗?
更新:为了澄清,当我说“使用 v_foo 初始化 m_foo”时,我的意思是我想让 m_foo 指向或引用 v_foo 对象(临时创建的主要)。不要复制/移动它的字段,而是让它成为成员。
【问题讨论】:
-
我想让 m_foo 指向或引用 v_foo 对象 --> 拥有指向临时对象的指针或引用很危险,不是吗?
标签: c++ c++14 unique-ptr move-semantics rvalue-reference