【发布时间】:2015-05-21 14:29:20
【问题描述】:
考虑这两个文件:
//main1.cpp
int main()
{
int a = 0;
int &b = a;
}
//main2.cpp
int main()
{
int a = 0;
int *b = &a;
}
当我使用 gcc -S 选项编译它并比较 2 个汇编器输出时,它们是完全相同的输出。那么为什么有些书说引用变量不占用额外的内存呢?
【问题讨论】:
-
编译器特定的优化也许...
-
“那么为什么有些书说引用变量不会增加内存??”因为他们不知道他们在说什么。获取better book。 (另外,对于像这样的例子,所有的代码可能都被删除了,因为它什么都不做)。
-
语义上,引用不需要占用内存。他们当然没有地址。但是在后台,如果需要,实现可以使用指针。实现可以做任何它需要的事情,以产生所需的语义。
标签: c++ pointers memory reference