我们知道,一旦我们将一个对象绑定到一个引用,我们就不能将另一个对象重新绑定到该引用。
但是在以下范围for
语句中,相同的引用依次绑定到不同的对象或元素。
std::string s;
for(auto &i:s)
{/*each character is referred sequentially*/
}
这怎么可能?
答案 0 :(得分:5)
相同的引用绑定到不同的对象
不相同的参考。引用i
(不是它指向的对象)在循环的每次迭代中被销毁并再次构造,因此它们是不同的引用。另见David的评论如下。
答案 1 :(得分:0)
但是在语句的以下范围内,相同的引用依次绑定到不同的对象或元素。
不,不。
看看这个:
void foo()
{
int x = 1;
}
void bar()
{
int x = 2;
}
两个x
是不同的变量,对吧?
循环中的i
也是如此。这就是如何定义它的工作方式。你不是在这里写一个老式的for (int i = 0; i < N; i++)
。