由于项目的需要学习了C++编程,为了更好的巩固学习所获,决定将学习中的点点滴滴记录下来以便和大家分享;希望能够给那些需要帮助的人一些微薄之力。。。

没有接触过C++的同学估计对引用这个词语比较陌生,下面我们就从引用的概念开始侃吧。

引用就是某一变量(目标)的一个别名(绰号),对引用的操作与对变量(目标)直接操作完全一样。下面是一个简单的例子:

int a;

int &b = a;

这里,b相当于a的别名(绰号),对b的任何操作就是对a的操作。因此,b既不是a的拷贝,也不是指向a的指针,其实b就是a自己;

引用的规则:

1.引用被创建时必须被初始化(指针可以在任何时候被初始化);

2.不能够有NULL引用,引用必须与合法的存储单元关联(指针可以指向NULL);

3.引用一旦被初始化,就不能够再改变引用的关系(指针可以随时指向不同的对象);

4.不能够建立数组的引用;(由于数组是由若干个元素组成的一个集合,所以无法创建数组的引用);

引用的用途:

引用的两大主要用途:

1.作为函数的参数;

2.从函数中返回左值;

在传统的C语言中,函数在调用时参数是通过值来传递的,也就是说函数的参数不具备返回值的能力,如果要使函数的参数具有返回值的能力,通常使用指针来实现的。

如果在函数参数传递时,通过引用这种方式的话,函数参数就具有返回值的能力了:

void swap(int &a,int &b)

  {

  int temp;

  temp=a;

  a=b;

  b=temp;

  }

**当大型对象作为参数传递给函数时,使用引用参数可使参数传递效率提高,因为引用并不产生参数的副本,也就是参数传递时,对象并不复制(可以考虑下C语言中函数参数传值的方式,可以很好的理解为什么void swap(int a, int b)无效);

常引用:

申明方式:const 类型标示符 &引用名=目标名

**用这种方式申明的引用,不能够通过引用对目标变量的值进行修改,从而使引用的目标成为const,达到了引用的安全性;

转载于:https://www.cnblogs.com/chegnshi-coding/archive/2011/11/18/4457750.html

浅析C++利器之——引用相关推荐

  1. 浅析C#中foreach引用变量

    昨天做老师的网站作业.要对一些对象做添加修改删除处理.别的倒没什么,删除时出现了点问题似的. 因为是从一个类的集合中删除掉一个元素.这样就要遍历整个集合,而foreach正是为遍历准备的新玩意.自然而 ...

  2. html编辑器 异次元,editor

    1 说明 <普通人的编辑利器EmEditor--Vim的替代者>是打造全能的文本编辑器序列 的第五篇.善用佳软有一篇文章<普通人的编辑利器--Vim>讲得很好,对Vim感兴趣的 ...

  3. 【C++】引用、内联函数、函数重载、函数默认参数(缺省参数)与占位参数、extern “C“ 浅析

    端午继续~         C++对C的扩展 目录 引用 普通变量名引用 对数组的引用 对指针的引用 对函数的引用 引用作为函数的参数 引用作为函数的返回类型 常引用 内联函数 函数重载 函数的默认参 ...

  4. 浅析 SpringMVC 中返回对象的循环引用问题

    问题发现 今天这个话题还是比较轻松的,可能很多朋友也都遇到过这个问题. @RestController.@ResponseBody 等注解是我们在写 Web 应用时打交道最多的注解了,我们经常有这样的 ...

  5. Kotlin 性能优化利器 —— Sqeuence 原理浅析

    前言 本文将介绍 Kotlin 中 序列(Sequence)的概念及使用,并介绍该惰性集合操作对集合链式调用性能优化背后的原理. 目录 序列(Sequence) 概念 在使用 Kotlin 集合操作符 ...

  6. 指针和引用的区别_浅析指针与引用

    关注"杜明c",每天进步一点点! 已经时隔一个多月没有发文章了,主要是太忙了,绝不是偷懒今天给大家聊一聊指针和引用的不同之处在哪里. 摘要 指针的使用 引用的使用 二者的区别 后话 ...

  7. C++ share_ptr 循环引用问题浅析

    share_ptr指针涉及到循环引用问题会因为share_ptr指针对应的use_count()无法清0,导致内存泄露,直接上例子: class S_B; class S_A { public:sha ...

  8. Python变量引用浅析

    引言: 对于刚接触Python语言的同学来说,可能不太了解Python中参数赋值的机制:在Python中,对一个变量的赋值,实际上是修改了数据的引用. 本文将在下面举几个例子来帮助说明该机制 首先我们 ...

  9. Android开发之Theme、Style探索及源码浅析

    1 背景 前段时间群里有伙伴问到了关于Android开发中Theme与Style的问题,当然,这类东西在网上随便一搜一大把模板,所以关于怎么用的问题我想这里也就不做太多的说明了,我们这里把重点放在理解 ...

最新文章

  1. jenkins获取远程服务器文件,Jenkins用SSH传输文件到远程服务器
  2. 套接字I/O模型之WSAEventSelect
  3. Oracle的sqlplus登录方式
  4. 新手python爬虫代码_新手小白必看 Python爬虫学习路线全面指导
  5. 三星10年旗舰彻底终结 5年前35次爆炸惊天下
  6. linux ssh抓包,如何在SSH连接Linux系统的环境下使用wireshark抓包?
  7. 亚马逊 html格式转换,亚马逊七种产品描述常用HTML代码,文字颜色代码让Listing更出彩...
  8. java socket中的方法_Java中关于Socket的方法与作用详解
  9. WebStorm学习笔记002---grunt-watch插件的使用-修改html,css,js文件实现自动编译更新
  10. 进程线程与栈、堆的关系
  11. c语言输入m行m列的二维数组,编写一个函数,用于计算具有n行和m列的二维数组中指定列的平均值以及数组各行的和的最小值。...
  12. OrCAD PSpice添加Spice模型——Cadence 17.4
  13. 【OP-TEE】TA的加载(超详细)
  14. 【word】系统内置样式
  15. Lumen为《堡垒之夜:大逃杀》第四章带来实时全局光照
  16. 浏览器导出ssl证书导入jdk
  17. element tree不刷新视图_00后都开始找工作了,这些都不懂还聊个啥?
  18. uni-app注册 page-head
  19. 图片无损压缩 图片无损等比例缩放
  20. CIKM 2022最佳论文:融合图注意力机制与预训练语言模型的常识库补全

热门文章

  1. VC++中 PostMessage和SendMessage的区别
  2. jQuery dataTables 的使用
  3. tomcat日志切割-logrotate
  4. 从锁的原理到构建分布式锁
  5. jquery改变css,改变style
  6. 2、xen虚拟机的安装
  7. Maven的发布plugin配置
  8. java new java.text.SimpleDateFormat(yyyyMM01).format(date)
  9. FusionCharts參数中文说明
  10. 一名普通程序员的自我诊断书