小编Dar*_*dan的帖子

std::move 和临时对象的生命周期

有人能解释一下这段代码的执行顺序吗?

struct Foo {
    ~Foo() {
        std::cout << "1";
    }
};
Run Code Online (Sandbox Code Playgroud)
int main() {
    const Foo& bar = Foo();
    const Foo& baz = std::move(Foo());
    std::cout << "2";
}
Run Code Online (Sandbox Code Playgroud)

以下代码打印121.

我明白为什么我在 2 之后得到 1,这是因为对象的生命周期绑定到它执行的代码块,而且我也知道右值可以绑定到左值 const 引用,但是为什么立即调用移动对象的析构函数?这是什么原因呢?这个析构函数到底在哪里被调用?

c++ destructor lifetime move-semantics stdmove

19
推荐指数
2
解决办法
1325
查看次数

标签 统计

c++ ×1

destructor ×1

lifetime ×1

move-semantics ×1

stdmove ×1