1.什么是引用?

引用就是对象的另外一个名字。在实际程序中,引用主要用作函数的形式参数。
引用是一种复合类型,通过在变量名前面添加“&”符号来定义。复合类型是指用其他类型定义的类型。在引用的情况下,每一种引用类型都“关联到”某一其他类型。不能定义引用类型的引用,但是可以定义任何其他类型的引用。
引用必须用与该引用同类型的对象初始化:
int ival = 1024;
int& refVal = ival;// ok:refVal refer to ival
int& refVal2; //error: a reference must be innitialized
int& refVal3 =10; //error: cannot take type"int" to "int&"

引用就是一个别名!!!
因为引用只是他绑定的对象的另一个名字,作用在引用上的所有操作事实上都是作用在该引用绑定的对象上!!!

2.如何定义多个引用?

C++允许在一个定义行中定义多个引用。但是,必须在每个引用标识符前添加“&”符号:

3. const 引用

const引用是指向const类型的引用!

const int ival = 1024;
const int& refVal = ival; // ok: both reference and object are const
int& refVal2 = ival; // erroe: non const reference to a const object

经过const限定符修订后,我们可以读取但是不能修改refVal,因此,任何对refVal得再次赋值都是非法的。这个限定是有意义的,不能直接对ival赋值,因此不能通过refVal来修改ival;

经过const限定后,我们就可以初始化为右值,如字面值常量:

int ival = 42;
// legal for const reference only
const int& refVal = 42;
const int& refVal = ival +1;

需要注意的是,同样的初始化方法对于非const引用是不合法的,并且会导致编译的错误。

C++primer: 引用与 const 引用相关推荐

  1. 引用和const 引用的区别(转自chinaitlab)

    原文地址:http://c.chinaitlab.com/basic/747981.html 1)在实际的程序中,引用主要被用做函数的形式参数--通常将类对象传递给一个函数. 引用必须初始化. 但是用 ...

  2. 【C++---const引用】数组进行指针引用传递给函数error: non-const lvalue reference of type ‘int*‘ to an rvalue

    目录 原因 类型转换 手动转换 自动转换 关于临时量 关于常量引用(const的引用) const引用的对象不是不能被修改了吗,这里为什么被修改了? 不是说是const引用吗?为什么又变成了引用所绑定 ...

  3. 《C++ Primer 第五版》第二章(1-4小节)------基本内置类型,初始化和赋值及声明和定义,指针和引用,const和constexpr

    C++ Primer第二章的内容主要介绍了变量和基础类型,包括C++语言定义的基础内置类型.变量的定义及声明.符合类型如指针及引用的介绍和const及常量表达式constexpr的介绍,本次博客也从这 ...

  4. C++ Primer 5th笔记(2)chapter 2变量和基本类型:引用、const

    1.引用refrence 定义:给对象起另外一个名字. 1.1 是两个类型一样的对象之间的: eg. int &i = 10;//错误double &f = i;//错误 引申:上面的 ...

  5. (4)风色从零单排《C++ Primer》 变量,引用,指针

    从零单排<C++ Primer> --(4)变量,引用,指针   变量的初始化 所谓变量的初始化,指在创建变量的同时给予值. 初始化方法: int units_sold = 0; int ...

  6. 指针、引用、const、类的浅显理解

    指针.引用.const.类的浅显理解 一.引用 1.1 理解与实验 和const 1.1.1 实验一 1.1.1 实验二 二.指针 三.指针和引用的区别 四.const(const和pointer) ...

  7. C++ 笔记(15)— 引用(声明引用、引用作为参数、引用作为函数返回值、const 用于引用)

    引用是变量的别名.也就是说,它是某个已存在变量的另一个名字.一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量. 1. 创建引用 要声明引用,可使用引用运算符 & ,如下面的 ...

  8. const引用和非const引用

    const引用可以初始化为不同类型的对象或者初始化为右值,同样的初始化对于非const引用却是不合法的. 非const引用只能绑定以与该引用同类型的对象中. const引用则可以绑定到不同但相关的类型 ...

  9. C++中const引用和非const引用的使用注意

    今天学习时突然有疑惑,C++有了指针为何还要设计引用呢?后来看到一篇博客豁然开朗:为什么 C++ 有指针了还要引用? 总结一下: 代码更加简洁好看了 由于引用必须被初始化,并且之后也无法重新绑定其他对 ...

最新文章

  1. BCH进入广告行业,将会碰撞出什么样的火花
  2. Verilog Design's Tips
  3. 今日arXiv精选 | 18篇近期值得关注的Transformer工作
  4. python获取当前路径下所有文件
  5. 通过ssh访问Back Track 5
  6. python mongodb查询_Python MongoDB 查找
  7. python3安装第三方库教程
  8. 02-CSS基础与进阶-day9_2018-09-12-20-29-40
  9. Android+Jquery Mobile学习系列(3)-创建Android项目
  10. java去掉边框_java swing怎么去掉边框
  11. 不用 qlv 格式转换成 mp4 - 优雅的下载腾讯视(mp4 格式)
  12. 计算机上图片打不开,为什么电脑图片打不开_解决电脑图片打不开的四种方法...
  13. Python 之 类 (Tom猫)
  14. 城市中心、华为、软通动力智慧城市联合解决方案发布
  15. 【算法】深度搜索(DFS) 和 广度搜索(BFS)
  16. java项目开发案例 报销_java19134企业员工出差报销预算管理系统-SSH-Mysql
  17. 一共81个,开源大数据处理工具汇总(下)转
  18. Python条码识别:使用Python进行条形码识别的详细教程
  19. salesforce中常用技能总结(纯粹干货,深度积累)图解
  20. python做情感分析

热门文章

  1. LInux CentOS6 无人值守安装实例(原作)
  2. EDM邮件群发十大技巧提升邮件群发效果
  3. ARM的批量加载/存储指令
  4. AnyChat SDK支持哪些开发语言?
  5. 教你配CISCO RIP(二)
  6. HD 1003 Max Sum (最大字段和问题)
  7. poj-2101Honey and Milk Land
  8. 顽石系列:Java技术面试
  9. Sublime Text 3快捷键汇总
  10. ASP.NET MVC API 接口验证