这无疑是一个挑剔的问题,主要是出于好奇心.假设我们有以下内容:
int x = 5;
int&& xref = std::move(x);
std::cout << "Before assignment x: " << x << std::endl;
std::cout << "Before assignment xref: " << xref << std::endl;
xref = 10;
std::cout << "After assignment x: " << x << std::endl;
std::cout << "After assignment xref: " << xref << std::endl;
Run Code Online (Sandbox Code Playgroud)
预期的输出是:
// Before assignment x: 5
// Before assignment xref: 5
// After assignment x: 10
// After assignment xref: 10
Run Code Online (Sandbox Code Playgroud)
这是有道理的. std::move转换x为xvalue并允许我们将其内存位置绑定到xref并相应地修改其内容.现在让我们说我们有以下内容: …