You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在范围for循环中使用引用是否属于“为引用重新绑定不同对象”?

范围for循环中的引用是否属于重新绑定?

先看这段C++范围for循环代码:

for (int& i : array) {
    //do something on i
}

从C++语言层面来说,这不属于引用的重新绑定。

虽然从表现上看,每次迭代时i好像指向了数组的不同元素,但这是个表象。C++里引用一旦初始化就不能改变绑定的对象,这是语言的硬性规则。

从语言逻辑的等价展开来看,这段范围for循环的行为近似于:

auto&& __range = array;
for (auto __begin = __range.begin(), __end = __range.end(); __begin != __end; ++__begin) {
    int& i = *__begin; // 每次迭代都是初始化一个新的引用,而非修改已有引用的绑定
    // do something on i
}

简单说,每次循环都会生成一个名叫i的新引用,它被绑定到当前迭代的数组元素上——并非同一个i被重新绑定到了不同对象。

内容的提问来源于stack exchange,提问作者Zackham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:15:52