gpt4 book ai didi

c++ - 赋值后引用和变量之间有什么实际区别吗?

转载 作者:行者123 更新时间:2023-11-30 00:47:04 25 4
gpt4 key购买 nike

我的理解是,引用基本上是一个指针,其值不会改变,并且始终被取消引用。所以如果我有代码

int& thisIsAReference = someVariable;

然后基本上创建一个指向 someVariable 位置的指针,并且该指针永远不能指向另一个位置并且总是被取消引用。

不过那好像和变量一样。据我了解,变量指的是特定的内存位置,不能指代不同的内存位置,而是隐式指代某个位置的值而不是位置本身。

那么,除了声明的语法不同之外,thisIsAReferencesomeVariable 之间还有什么区别吗?

最佳答案

是的,你完全正确。在概念层面,您可以将引用视为同一变量的另一个名称(如 Stroustrup 在 TC++PL 中所说)。反之亦然:您可以将任何变量视为变相的引用 - 名称实际上属于引用,它绑定(bind)到相同的未命名存储区域。

然而,这就是它在概念层面上的样子。

在实践中可能完全不同。从实际的角度来看,在一般情况下,引用在底层是作为指针实现的。这意味着通过引用访问需要隐式运行时取消引用该指针。这使得引用访问比“普通”直接变量访问执行得更慢。

然而,在许多情况下,编译器可能足够聪明,可以找出引用绑定(bind)到什么,并消除指针解引用,将其替换为直接访问目标变量。在这种情况下,上述概念(“引用只是变量的另一个名称”)在实践中得到了充分实现。

关于c++ - 赋值后引用和变量之间有什么实际区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35925477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com