我正在阅读第五版c ++ Primer。我遇到了以下代码片段,对此我有疑问:
int num1=2;
int num2=3;
int &ref_num = num1 //Ok, ref_num is a non-constant int type reference to num1
int &ref_num = num2 //Error, as ref_num is already declared in prev statement
因此,我们不能同时将引用变量绑定到多个对象。但它也说,我们可以使用引用控制变量来查看字符串文字。
string line("Hello");
for(auto &ref_var : line)
因此,在这种情况下,我的引用变量“ref_var”将绑定到字符串对象“line”的每个元素。怎么样?
答案 0 :(得分:5)
基于范围的for循环等效于此(伪代码):
for (i = 0; i < line.size(); ++i)
{
auto& ref_var = line[i];
// rest of body here
}
换句话说,控制变量实际上是每次循环迭代重新声明的。