2013-03-04 41 views
1

有时候我看到函数声明是这样的:C++双和使用

void foo(vector<some type>&& inputs); 

什么是使用& &,而不是&的主要原因?

+4

可能两个最常见的主要原因是允许移动语义和完美的转发。 – 2013-03-04 05:20:19

+0

@本,是的,它确实看起来像是重复的。尽管我认为我的答案比那个线索的答案更好! – Dave 2013-03-04 05:23:12

回答

3

这是C++ 11中称为右值引用的新事物。

你可以在这里阅读一个伟大的介绍给他们:http://thbecker.net/articles/rvalue_references/section_01.html

从本质上讲,它说,这将是可以在不导致问题被销毁的对象的引用,并且被用于优化某些操作,如拷贝构造函数(如果其他对象可以被销毁,则可以更改为交换)。