由于引用本身不是一个对象,因此不能取地址(与指定存储分配的适当对象的指针不同),那么在c ++中如何或在哪里存储引用或跟踪引用? / p>
答案 0 :(得分:4)
来自[dcl.ref] / 4:
未指明引用是否需要存储(3.7)。
但是请注意,存储持续时间适用于对象和对象:来自[basic.stc] / 3:
存储持续时间类别也适用于参考文献。
也就是说,变量的形式生命周期约束同样适用于所有变量,无论它们是对象还是引用,并且引用可以超出范围,其生命周期就像其他变量一样。
但是,可能没有“动态重新启动”,因此动态存储持续时间不适用。其次,存储持续时间也适用于表达式的值,当然表达式的值永远不是引用(但始终是对象)。
最后,非静态引用数据成员存储为包含它的对象的一部分。因此,您可以很好地拥有struct T { int & r; };
并拥有临时和动态分配的T
类型的实例。 (另请注意,由于offsetof
不是标准布局,因此不允许您将T
应用于T
。)