gpt4 book ai didi

c++ - 引用真的可以占用内存吗?

转载 作者:太空狗 更新时间:2023-10-29 22:57:19 24 4
gpt4 key购买 nike

看完这篇answer ,我不太确定引用是否确实占用内存。我知道当编译器用引用变量替换引用时它不占用内存,比如用引用变量交换引用。

但是,

In the general case, compilers usually implement references as pointers. But they generally have more information about what a reference may point to, and use that for optimization.

并且由于指针确实占用内存,那么自从编译器将其设为指针后,该引用现在不会导致占用内存吗?在编译器选择使引用成为指针而不是仅仅交换它的情况下,可以说引用实际上确实占用内存但以一种轻微的隐式方式占用内存吗?

事实上,编译器什么时候选择将引用实现为指针而不是交换,或者编译器与编译器之间存在差异?

最佳答案

引用如果是类的成员肯定会占用一些空间。例如:

class A{
public:
A(int &refval):m_ref(refval){};
private:
int &m_ref;
}

编译器会将此变量视为常量指针。

但是,如果您将它用作范围内的临时变量,则它没有理由使用内存:

void func(int &a){
int &a_ref = a;
}

编译器只会用实际变量替换引用。

关于c++ - 引用真的可以占用内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44784857/

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