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

C++中引用看似可重绑定?测试代码运行引发疑问

为什么你的代码看起来像引用重绑定,实际却不是?

首先明确:C++里的引用一旦绑定到某个变量,就绝对不能再切换绑定到其他变量,它从始至终都是原变量的“别名”。

你代码里的关键误解出在这一行:

ref = b;

这行代码不是把ref重新绑定到b,而是把b的值赋值给ref所代表的变量——也就是a。

你可以修改代码验证这个结论:

#include <iostream>

using namespace std;

int main()
{
    int a = 0;
    int b = 1;

    int& ref{a};
    ref = b;

    cout << ref << endl; // 输出1
    cout << a << endl;    // 同样输出1,说明a被修改了
    cout << b << endl;    // 输出1,b的值没变

    return 0;
}

输出结果会是三个1,这说明ref依然是a的别名,ref = b只是把a的值改成了b的值,根本没改变引用的绑定关系。

如果真需要能切换指向的“类似引用”的东西,应该用指针:

int* ptr = &a;
ptr = &b; // 这才是真正切换指向,此时ptr指向b

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:50:26