【问题标题】:How/Where are references stored in c++? [duplicate]引用如何/在哪里存储在 C++ 中? [复制]
【发布时间】:2016-10-05 01:19:01
【问题描述】:

由于引用本身不是一个对象,因此不能获取地址(与分配给它们的适当对象的指针不同),那么在 C++ 中如何或在何处存储或跟踪引用?

【问题讨论】:

  • 未指定引用的存储。
  • 引用不需要“存储”,就像变量名不需要“存储”一样。

标签: c++ reference


【解决方案1】:

来自 [dcl.ref]/4:

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

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

存储持续时间类别也适用于引用。

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

但是,不能有“动态引用”,因此动态存储持续时间不适用。其次,存储期也适用于表达式的值,当然,表达式的值绝不是引用(而始终是对象)。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
  • 2021-05-04
相关资源
最近更新 更多