据我所知std::move(相同static_cast<T&&>)将变量转换为rvalue并分配给左值,因此我想在下面的代码中:
int a = 1;
int b = static_cast<int&&>(a);
Run Code Online (Sandbox Code Playgroud)
b并a具有相同的地址,但在VS中,它打印不同的地址.
int a = 1;
int b = static_cast<int&&>(a);
cout << hex << &a << endl;
cout << hex << &b << endl;
Run Code Online (Sandbox Code Playgroud)
如果此后a仍然指向不同的内存位置,std::move在这种情况下使用有什么好处?
仅仅因为你"移动"它们并不意味着它们将共享相同的地址.移动一个值是一个高级抽象,int移动和复制等基本类型完全相同,这在这里发生.我建议你阅读std :: move上的优秀帖子,了解它的用途以及它的用途.
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |