码迷,mamicode.com
首页 > 编程语言 > 详细

C++引用(左值引用)

时间:2019-08-23 22:38:55      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:mil   编译   右值   nbsp   指针   常量   对象   报错   val   

1. 相关概念

  C++引用分两种:lvalue reference(左值引用)和rvalue reference(右值引用)。本文讨论的是lvalue reference(左值引用)。

1.1 lvalue(左值)和rvalue(右值)

  在讨论C++引用之前,我们需要先搞清楚两个概念:lvalue(左值)和rvalue(右值)。

  lvalue(左值)和rvalue(右值)是对每个C++表达式值类别的区分。

  一个表达式的值类别是左值,那么这个表达式有两点性质:1)可以放在赋值运算符‘=‘的左边;2)可以用取地址运算符‘&‘取地址。

  对象(内嵌类型定义的变量,复合类型定义的变量(指针,数组),类类型定义的对象)是左值表达式。

2. 左值引用

  引用是对象的一个别名,引用本身不是一个对象。

  也就是说,

    1)我们对引用的操作就是对对象的操作(基本的算术运算)。可以理解为通过引用和通过对象对内存内容的操作是透明的,一方改变内存内容,另一方是可见的。

    2)引用只能指向对象,不能指向常量或者表达式。

  由于引用本身不是一个对象,因此不存在引用的引用。

  引用的声明

  Type &r = object;

    1)引用在声明的时候就必须初始化,且初始化时引用的类型和对象的类型必须相等,否则编译时报错;

    2)一旦引用了一个对象,就不能再引用另一个对象;

    3)对引用或者对象重新进行赋值时,赋值号两边的类型可以不同,但会产生截断。

 

C++引用(左值引用)

标签:mil   编译   右值   nbsp   指针   常量   对象   报错   val   

原文地址:https://www.cnblogs.com/GunW/p/11402722.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!