引用如何/在哪里存储在c ++中?

时间:2016-06-05 09:28:19

标签: c++ reference

由于引用本身不是一个对象,因此不能取地址(与指定存储分配的适当对象的指针不同),那么在c ++中如何或在哪里存储引用或跟踪引用? / p>

1 个答案:

答案 0 :(得分:4)

来自[dcl.ref] / 4:

  

未指明引用是否需要存储(3.7)。

但是请注意,存储持续时间适用于对象和对象:来自[basic.stc] / 3:

  

存储持续时间类别也适用于参考文献。

也就是说,变量的形式生命周期约束同样适用于所有变量,无论它们是对象还是引用,并且引用可以超出范围,其生命周期就像其他变量一样。

但是,可能没有“动态重新启动”,因此动态存储持续时间不适用。其次,存储持续时间也适用于表达式的值,当然表达式的值永远不是引用(但始终是对象)。

最后,非静态引用数据成员存储为包含它的对象的一部分。因此,您可以很好地拥有struct T { int & r; };并拥有临时和动态分配的T类型的实例。 (另请注意,由于offsetof不是标准布局,因此不允许您将T应用于T。)