Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 同一引用如何绑定不同的对象?_C++_C++11 - Fatal编程技术网

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
都是一个全新的参考。