【发布时间】:2013-02-18 03:42:34
【问题描述】:
有时我会看到这样的函数声明:
void foo(vector<some type>&& inputs);
使用 && 而不是 & 的主要原因是什么?
【问题讨论】:
-
可能两个最常见的主要原因是允许移动语义和完美转发。
-
@Ben,是的,它确实看起来像复制品。我认为我的答案比那个线程的答案更好!
有时我会看到这样的函数声明:
void foo(vector<some type>&& inputs);
使用 && 而不是 & 的主要原因是什么?
【问题讨论】:
这是 C++11 中的一个新事物,称为右值引用。
您可以在这里阅读他们的精彩介绍:http://thbecker.net/articles/rvalue_references/section_01.html
本质上,它表示它将是对可以被销毁而不会引起问题的对象的引用,并用于优化某些操作,例如复制构造函数(如果另一个对象可以被销毁,则可以将其更改为交换) .
【讨论】: