如果是对一个常量进行引用,则编译器首先建立一个临时变量,然后将该常量的值置入临时变量中,对该引用的操作就是对该临时变量的操作。对C++常量引用可以用其它任何引用来初始化;但不能改变。

关于引用的初始化有两点值得注意:

(1)当初始化值是一个左值(可以取得地址)时,没有任何问题;

(2)当初始化值不是一个左值时,则只能对一个const T&(常量引用)赋值。而且这个赋值是有一个过程的:

首先将值隐式转换到类型T,然后将这个转换结果存放在一个临时对象里,最后用这个临时对象来初始化这个引用变量。

通过C++常量引用从函数返回一个局部对象:

一般从一个函数返回一个局部对象的引用是不对的:

 T & my_op ( void )
{
T t;
return t;
} // The T object t got destroyed here so the returned reference is not valid anymore.

特殊情况:返回一个常引用

const T & my_op ( void )
{
T t;
return t;
}
const T & my_t_obj = my_op ();

在这个情况下,局部变量 t 不会被直接析构,而是会保留到 my_t_obj 的生命周期结束为止。

总之,C++常量引用语法上可以引用一个临时变量。这种方法在使用引用作函数参数和返回局部变量时有意义。我目前看来常量引用主要用在作函数参数或保证不修改原变量的时候。

最新文章

  1. Tips For Your Maya Plugin Development
  2. apache 日志轮询 linux cronolog
  3. [Hadoop]如何安装Hadoop
  4. 使用multi curl进行http并发访问
  5. 数据库字段Pointer的操作方法
  6. canvas绘制文字
  7. Qt 获取usb设备信息 hacking
  8. php基础知识笔记
  9. GNU GPL介绍
  10. HDU1754_I Hate It(线段树/单点更新)
  11. java====color、font、button、label、textfield、textarea使用
  12. mysql 安装 linux系统下
  13. react-native-splash-screen 插件 android 系统app崩溃问题
  14. python系统编程(八)
  15. MongoDB 常用的几大GUI工具
  16. cf——Sasha and a Bit of Relax(dp,math)
  17. 【LOJ】#2535. 「CQOI2018」九连环
  18. FPGA In/Out Delay Timing Constaint
  19. Information:java: Errors occurred while compiling module 'spring'
  20. erlang otp中的socket参数设置

热门文章

  1. wx.button
  2. js正则验证两位小数 验证数字最简单正则表达式大全
  3. .net通用权限框架B/S (五)--WEB(2)登录
  4. APP-SQLAP-10771
  5. EJB QI查询
  6. unix网络编程笔记
  7. js 全局变量
  8. 【Chromium中文文档】进程模型
  9. 【Chromium中文文档】Chromium如何展示网页
  10. java 执行linux命令