如何在Reference初始化期间创建临时对象?

时间:2011-12-21 06:55:25

标签: c++ reference

如何在编译器的引用初始化期间创建临时对象,这意味着什么?

修改

来自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)。

从此链接:http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fcplr382.htm

  

创建临时对象以初始化引用变量时,   临时对象的名称与作用域的名称相同   参考变量。

1 个答案:

答案 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引用的临时生命周期是引用的生命周期。即当参考超出范围时,临时被销毁。