引用如何不需要存储?

Rub*_*ens 4 c++ compiler-construction variables reference

这个问题,因此,从标准(ISO C++ - 03):

未指定参考是否需要存储(3.7).

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

我挣扎把握的是:如何将一个参考来要求存储?

任何举例说明这一点的示例代码都将非常感激.

编辑:来自@ JohannesSchaub-litb评论,有什么类似的,如果我没有使用const &,或者如果我使用const &默认值,它需要分配?在某种程度上,在我看来,根本不应该为引用分配 - 当然,除非涉及明确的分配,例如:

A& new_reference(*(new A())); // Only A() instance would be allocated,
                              // not the new_reference itself
Run Code Online (Sandbox Code Playgroud)

有这样的情况吗?

Jos*_*eld 5

采取简单的方法:

int foo() {
  int  x = 5;
  int& r = x;
  r = 10;
  return x;
}
Run Code Online (Sandbox Code Playgroud)

实现可以使用指向x幕后的指针来实现该引用,但是没有理由这样做.它也可以将代码转换为等效形式:

int foo() {
  int x = 10
  return x;
}
Run Code Online (Sandbox Code Playgroud)

然后不需要任何指针.编译器可以直接将其烘焙到r相同的可执行文件中x,而无需存储和取消引用指向的指针x.

关键是,引用是否需要任何存储是一个您不需要关心的实现细节.

  • @ JohannesSchaub-litb为什么必须有这样的例子?它说它是否需要存储是未指定的,而不是它们不需要存储. (2认同)