gpt4 book ai didi

c++ - 引用如何不需要存储?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:46:34 24 4
gpt4 key购买 nike

来自 this question ,因此,来自标准 (ISO C++-03):

It is unspecified whether or not a reference requires storage (3.7).

在该线程的一些答案中,据说引用在内部具有相同的指针结构,因此具有相同的大小(32/64 位)。

我很难理解的是:引用如何需要存储?

任何示例代码都将不胜感激。

编辑:来自@JohannesSchaub-litb 的评论,如果我没有使用 const &,或者如果我使用具有默认值的 const &,是否有类似的东西,它需要分配?在我看来,不知何故,根本不应该对引用进行分配——当然,除非涉及显式分配,例如:

A& new_reference(*(new A())); // Only A() instance would be allocated,
// not the new_reference itself

有这样的案例吗?

最佳答案

简单一点:

int foo() {
int x = 5;
int& r = x;
r = 10;
return x;
}

实现可能在幕后使用指向x 的指针来实现该引用,但没有理由必须这样做。它也可以将代码转换为以下等价形式:

int foo() {
int x = 10
return x;
}

那么就不需要任何指针了。编译器可以将 rx 相同的可执行文件直接烘焙到可执行文件中,而无需存储和取消引用指向 x 的指针。

重点是,引用是否需要任何存储是您不需要关心的实现细节。

关于c++ - 引用如何不需要存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14799690/

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