此代码如何使用整数为您提供引用?

How does this code give you a reference using an integer?

本文关键字:引用 代码 何使用 整数      更新时间:2023-10-16

我正在阅读这篇关于左值和右值的文章。 我不太明白这段代码:

int x;
int& getRef ()
{
return x;
} 
getRef() = 4;

首先,return x如何为您提供x的参考? 不应该是像return addressof(x)这样的东西吗?

第二,getRef() = 4到底是做什么的? 这应该是作业吗? 我在这里不知所措。

虽然引用不是指针,但它们的行为通常很像指针,大多数使用引用的代码都可以使用指针编写。指针更灵活、更强大、更令人困惑和危险,因此通常最好使用引用,除非你真的需要指针。可以使用如下指针编写相同的代码:

int x;
int* getPtr ()
{
return &x; // return pointer to x
} 
*(getPtr()) = 4; // assign value to what the pointer points to

为了进一步阅读,这个QA有一些好东西:何时使用引用与指针

return x

如何给你一个对 x 的引用

它这样做是因为它不是int getRef,而是int& getRef。您是对的,return x;没有告诉我们是否返回引用可能会有点令人困惑。如果没有&它将无法工作,并在getRef() = 4;时给您一个编译时错误。

其次,getRef(( = 4 到底是做什么的?这应该是一个 分配?我在这里不知所措。

没错。它将4分配给x。这是有效的,因为引用是左值。

从代码质量的角度来看,这是一个相当粗糙的例子。

该函数返回对全局变量x的引用(因为它被声明为返回引用,x 被传递以返回(

由于 Funktion 返回一个引用,你可以直接对返回值进行赋值,因为最后它类似于指针