【发布时间】:2018-07-24 23:14:13
【问题描述】:
我在 C++ 设计模式教程中找到了以下代码:
vector<Object*> objects;
void foo() override
{
cout << "Group contains:\n";
for (auto&& o : objects)
o->foo();
}
在循环中使用右引用的目的是什么?我知道它用于避免临时对象的复制并实现移动语义,但我看不出它在这种情况下如何应用以及为什么不使用简单的
for (auto o : objects)
o->foo();
另外如果使用auto&o会发生什么?所有这些可能性都正确编译并产生正确的结果......
【问题讨论】:
-
auto&&表示“除非需要,否则不要复制,否则我不在乎这是复制还是深度引用”。
标签: c++ c++11 foreach reference auto