在for循环

时间:2018-06-17 23:59:21

标签: c++ c++11

我正在阅读第五版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”的每个元素。怎么样?

1 个答案:

答案 0 :(得分:5)

基于范围的for循环等效于此(伪代码):

for (i = 0; i < line.size(); ++i)
{
    auto& ref_var = line[i];
    // rest of body here
}

换句话说,控制变量实际上是每次循环迭代重新声明的。