voID Print(int& i){ cout<<"L Value reference "<<endl;}voID Print(int&& i){ cout<<"R Value reference "<< endl;}int main(){ int i = 10; Print(i); //OK,understandable Print(10); //will 10 is not getting copIEd? So where it will stored Print(std::move(i)); //what does move exactly do return 0;}
谢谢.
解决方法But what exactly happens,where that 10 will get copIEd (or from where it referred)
创建临时值,并将引用传递给函数.临时值是右值,因此可以绑定到右值参考值;所以选择了第二次过载.
Secondly what
std::move
actually do?
它为您提供了对其参数的右值引用.它与static_cast< T&&>等价(根据定义).
尽管有这个名字,但它本身并没有任何动作;它只是为您提供了一个可用于移动值的引用.
总结以上是内存溢出为你收集整理的c – 当我们使用rvalue引用时,究竟会发生什么?std :: move如何工作?全部内容,希望文章能够帮你解决c – 当我们使用rvalue引用时,究竟会发生什么?std :: move如何工作?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)