有人能解释一下这段代码的执行顺序吗?
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 引用,但是为什么立即调用移动对象的析构函数?这是什么原因呢?这个析构函数到底在哪里被调用?