理解c++中的引用

understanding references in c++

本文关键字:引用 c++ 理解      更新时间:2023-10-16

我有以下代码:

int main() {
int x = 3;
int &ref = x;
int &ref2 = ref;
ref = 100;
std::cout <<ref;
std::cout <<ref2;
return 0;
}

这将打印出100100。我觉得很困惑。我的理解是refref2都是对底层对象(x=3(的引用。然后,我们更改ref的值。因此,我期望1003

您永远不会更改ref(该语言不允许您重新绑定引用(。事实上,这就是为什么在创建引用时需要使用引用初始化的原因:例如,不能编写int &ref; ref = x;

语句ref = 100;更改引用绑定到的对象的值。

因此,xrefref2的输出是相同的。

我的理解是ref和ref2都是对底层对象(x=3(的引用

是。

它们都是对x的引用,其初始值为3。本质上,您有一个整数对象,您可以通过名称xrefref2中的任何一个来引用它。

然后我们更改ref 的值

不,你在自相矛盾。

对象具有值。像ref这样的引用不是对象,而是对对象的引用,并且它们没有自己的值来更改。

你说ref是一个引用,这是真的——它是对int类型对象的引用,它可以取一个值,当你写ref = 100时,它的值会改变。名称xrefref2后来仍然引用同一个整数对象,但现在它的值是100而不是3

不能重新设置引用(使其引用不同的对象(,并且引用没有可更改的值。它指的是一个对象,其值可以通过引用进行更改。


NB。我不认为这个问题与完全重复。我们可以重新分配引用吗?尽管它包含一些相同的误解。