如何在编译器的引用初始化期间创建临时对象,这意味着什么?
来自C ++标准:
12.2临时对象[class.temporary]类型的临时对象是各种各样的 上下文: 绑定对prvalue的引用 (8.5.3),返回1 a prvalue(6.6.3),一个创建prvalue的转换(4.1,5.2.9, 5.2.11,5.4),抛出异常(15.1),进入处理程序(15.3),以及一些初始化(8.5)。
创建临时对象以初始化引用变量时, 临时对象的名称与作用域的名称相同 参考变量。
答案 0 :(得分:2)
从您的编辑:12.2表示在初始化const引用的情况下创建临时值,其中它引用prvalue。例如:
double d = 3.14;
const int &r = d;
编译器将此代码转换为如下代码:
int temp = d; // creates a temporary int
const int &r = temp; // reference is bound to that temporary
绑定到const引用的临时生命周期是引用的生命周期。即当参考超出范围时,临时被销毁。