浅析C++利器之——引用
由于项目的需要学习了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++利器之——引用相关推荐
- 浅析C#中foreach引用变量
昨天做老师的网站作业.要对一些对象做添加修改删除处理.别的倒没什么,删除时出现了点问题似的. 因为是从一个类的集合中删除掉一个元素.这样就要遍历整个集合,而foreach正是为遍历准备的新玩意.自然而 ...
- html编辑器 异次元,editor
1 说明 <普通人的编辑利器EmEditor--Vim的替代者>是打造全能的文本编辑器序列 的第五篇.善用佳软有一篇文章<普通人的编辑利器--Vim>讲得很好,对Vim感兴趣的 ...
- 【C++】引用、内联函数、函数重载、函数默认参数(缺省参数)与占位参数、extern “C“ 浅析
端午继续~ C++对C的扩展 目录 引用 普通变量名引用 对数组的引用 对指针的引用 对函数的引用 引用作为函数的参数 引用作为函数的返回类型 常引用 内联函数 函数重载 函数的默认参 ...
- 浅析 SpringMVC 中返回对象的循环引用问题
问题发现 今天这个话题还是比较轻松的,可能很多朋友也都遇到过这个问题. @RestController.@ResponseBody 等注解是我们在写 Web 应用时打交道最多的注解了,我们经常有这样的 ...
- Kotlin 性能优化利器 —— Sqeuence 原理浅析
前言 本文将介绍 Kotlin 中 序列(Sequence)的概念及使用,并介绍该惰性集合操作对集合链式调用性能优化背后的原理. 目录 序列(Sequence) 概念 在使用 Kotlin 集合操作符 ...
- 指针和引用的区别_浅析指针与引用
关注"杜明c",每天进步一点点! 已经时隔一个多月没有发文章了,主要是太忙了,绝不是偷懒今天给大家聊一聊指针和引用的不同之处在哪里. 摘要 指针的使用 引用的使用 二者的区别 后话 ...
- C++ share_ptr 循环引用问题浅析
share_ptr指针涉及到循环引用问题会因为share_ptr指针对应的use_count()无法清0,导致内存泄露,直接上例子: class S_B; class S_A { public:sha ...
- Python变量引用浅析
引言: 对于刚接触Python语言的同学来说,可能不太了解Python中参数赋值的机制:在Python中,对一个变量的赋值,实际上是修改了数据的引用. 本文将在下面举几个例子来帮助说明该机制 首先我们 ...
- Android开发之Theme、Style探索及源码浅析
1 背景 前段时间群里有伙伴问到了关于Android开发中Theme与Style的问题,当然,这类东西在网上随便一搜一大把模板,所以关于怎么用的问题我想这里也就不做太多的说明了,我们这里把重点放在理解 ...
最新文章
- jenkins获取远程服务器文件,Jenkins用SSH传输文件到远程服务器
- 套接字I/O模型之WSAEventSelect
- Oracle的sqlplus登录方式
- 新手python爬虫代码_新手小白必看 Python爬虫学习路线全面指导
- 三星10年旗舰彻底终结 5年前35次爆炸惊天下
- linux ssh抓包,如何在SSH连接Linux系统的环境下使用wireshark抓包?
- 亚马逊 html格式转换,亚马逊七种产品描述常用HTML代码,文字颜色代码让Listing更出彩...
- java socket中的方法_Java中关于Socket的方法与作用详解
- WebStorm学习笔记002---grunt-watch插件的使用-修改html,css,js文件实现自动编译更新
- 进程线程与栈、堆的关系
- c语言输入m行m列的二维数组,编写一个函数,用于计算具有n行和m列的二维数组中指定列的平均值以及数组各行的和的最小值。...
- OrCAD PSpice添加Spice模型——Cadence 17.4
- 【OP-TEE】TA的加载(超详细)
- 【word】系统内置样式
- Lumen为《堡垒之夜:大逃杀》第四章带来实时全局光照
- 浏览器导出ssl证书导入jdk
- element tree不刷新视图_00后都开始找工作了,这些都不懂还聊个啥?
- uni-app注册 page-head
- 图片无损压缩 图片无损等比例缩放
- CIKM 2022最佳论文:融合图注意力机制与预训练语言模型的常识库补全