C++ 同一引用如何绑定不同的对象?
我们知道,一旦我们将一个对象绑定到一个引用,我们就无法将另一个对象重新绑定到该引用。 但是在下面的C++ 同一引用如何绑定不同的对象?,c++,c++11,C++,C++11,我们知道,一旦我们将一个对象绑定到一个引用,我们就无法将另一个对象重新绑定到该引用。 但是在下面的for语句范围内,相同的引用顺序绑定到不同的对象或元素 std::string s; for(auto &i:s) {/*each character is referred sequentially*/ } 这怎么可能 同一引用绑定到不同的对象 它不是同一个参考。引用i(不是它指向的对象)在循环的每次迭代中都会被销毁并重新构造,因此它们是不同的引用。另见下面大卫的评论 但在下面语句的范围
for
语句范围内,相同的引用顺序绑定到不同的对象或元素
std::string s;
for(auto &i:s)
{/*each character is referred sequentially*/
}
这怎么可能
同一引用绑定到不同的对象
它不是同一个参考。引用i
(不是它指向的对象)在循环的每次迭代中都会被销毁并重新构造,因此它们是不同的引用。另见下面大卫的评论
但在下面语句的范围内,相同的引用按顺序绑定到不同的对象或元素
std::string s;
for(auto &i:s)
{/*each character is referred sequentially*/
}
不,没有
看看这个:
void foo()
{
int x = 1;
}
void bar()
{
int x = 2;
}
两个x
s是不同的变量,对吗
循环中的i
也是如此。这就是它的工作定义。你不是在为(inti=0;i。我推荐例如。请特别注意所示的实现细节。与(inti=0;i<10;++i){int&j=func(i);…}
没有什么不同。循环的每次迭代,j
都是一个全新的参考。