什么是“引用”?申明和使用“引用”要注意哪些问题?

答:引用就是某个目标变量的“别名”(alias)。相应用的操作与对变量直接操作效果全然同样。

申明一个引用的时候。切记要对其进行初始化

引用声明完成后,相当于目标变量名有两个名称。即该目标原名称和引用名,不能再把该引用名作为其它变量名的别名。声明一个引用。不是新定义了一个变量,它仅仅表示该引用名是目标变量名的一个别名。它本身不是一种数据类型,因此引用本身不占存储单元。系统也不给引用分配存储单元。不能建立数组的引用。

将“引用”作为函数參数有哪些特点?

(1)传递引用给函数与传递指针的效果是一样的。这时。被调函数的形參就成为原来主调函数中的实參变量或对象的一个别名来使用。所以在被调函数中对形參变量的操作就是对其对应的目标对象(在主调函数中)的操作。

(2)使用引用传递函数的參数,在内存中并没有产生实參的副本。它是直接对实參操作。而使用一般变量传递函数的參数,当发生函数调用时,须要给形參分配存储单元,形參变量是实參变量的副本。假设传递的是对象,还将调用拷贝构造函数。因此,当參数传递的数据较大时,用引用比用一般变量传递參数的效率和所占空间都好。

(3)使用指针作为函数的參数尽管也能达到与使用引用的效果,可是,在被调函数中相同要给形參分配存储单元。且须要反复使用"*指针变量名"的形式进行运算,这非常easy产生错误且程序的阅读性较差;还有一方面。在主调函数的调用点处,必须用变量的地址作为实參。而引用更easy使用,更清晰。

“引用”与指针的差别是什么?

指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。

程序中使用指针。程序的可读性差;

而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。

此外。就是上面提到的对函数传ref和pointer的差别。

什么时候须要“引用”?

流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的參数、赋值操作符=的參数、其他情况都推荐使用引用。


C++一些知识难点的更多相关文章

  1. SVG知识难点

      参考资料:http://www.w3cplus.com/css3/clip.html   1.clip:默认值是auto,为不裁剪 <img border="0" src ...

  2. 【转】JAVA自学之路

    JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...

  3. Xcode7--免证书真机调试

    Xcode7之前,想要真机调试,必须花99刀购买开发者账号,而且步骤繁琐,需要下载证书.随着Xcode7的推出,大幅度的简化了真机调试的步骤,对ios开发工作者和正在学习ios开发的众多码农们,可以说 ...

  4. 2016-2017-2 《Java程序设计》教学进程

    2016-2017-2 <Java程序设计>教学进程 目录 考核方式 课前准备 教学进程 第00周学习任务和要求 第01周学习任务和要求 第02周学习任务和要求 第03周学习任务和要求 第 ...

  5. 那些年我们写过的T-SQL(上篇)

    在当今这个多种不同数据库混用,各种不同语言不同框架融合的年代(一切为了降低成本并高效的提供服务),知识点多如牛毛.虽然大部分SQL脚本可以使用标准SQL来写,但在实际中,效率就是一切,因而每种不同厂商 ...

  6. 2015-2016-2 《Java程序设计》教学进程

    2015-2016-2 <Java程序设计>教学进程 目录 考核方式 寒假准备 教学进程 第00周学习任务和要求 第01周学习任务和要求 第02周学习任务和要求 第03周学习任务和要求 第 ...

  7. DHCP的若干原理解释

    转自:http://blog.chinaunix.net/uid-22287947-id-1775641.html 搜罗了几种关于dhcp的原理和过程解释 DHCP(Dynamic Host Conf ...

  8. Linux第二次报告20135221

    学习计时:共xxx小时 读书: 代码: 作业: 博客: 一.学习目标 1. 熟悉Linux系统下的开发环境   2. 熟悉vi的基本操作   3. 熟悉gcc编译器的基本原理   4. 熟练使用gcc ...

  9. Linux基础入门学习笔记20135227黄晓妍

    学习计时:共24小时 读书:1小时 代码:8小时 作业:3小时 博客:12小时 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用L ...

随机推荐

  1. 计算某个时间段(2017-10-01 2017-12-01)内svn更新文件的MD5

    #!/bin/sh svn up svn log -v -r {$1}:{$2} | grep / | grep -v xxx | sort -f -u | uniq | awk -F 'xxxx' ...

  2. Windows7下caffe-ssd-microsoft下编译

    整个编译可谓漫长 编译了两天 网上教程也很多 但是也很杂 遇到各种错误 总归是编完了 1.下载Windows版本的Caffe-SSD源码 下载链接:https://github.com/conner9 ...

  3. xhtml1-transitional.dtd

    <!-- Extensible HTML version 1.0 Transitional DTD This is the same as HTML 4 Transitional except ...

  4. NPOI导出Excel自动计算公式问题

    以前用过sheet.ForceFormulaRecalculation = true;当时能够自动计算出来. 今天把模板改了一下(没动公式,但是模板是老板改的,我也不知道他操作了什么),结果就不能自动 ...

  5. 域名转让(bcd.cn,tjcpda.com,jscpda.com,fjcpda.com)

    因本人工作有所调整,现对所拥有的域名全部转让,有需要者请与我联系,谢谢. bcd.cn tjcpda.com jscpda.com fjcpda.com 联系方式: QQ:1181608198 Ema ...

  6. ★Java-----记事本编译、运行时注意事项

    1.文件名需要与源代码中公共类的名字相同,即class后面的名字: 2.Java中严格区分大小写: 3.记事本编辑好之后保存文件后缀必须是". java": 4.运行cmd,dos ...

  7. 【python】random

    1.random 和其他语言一样,返回大于等于0.小于1的浮点数 2.uniform(a,b) 返回大于等于a.小于等于b的浮点数 3.randint(a,b) 这个很好理解,返回一个介于a和b之间的 ...

  8. 人工机器:NDC-谷歌机器翻译破世界纪录,仅用Attention模型,无需CNN和RNN

    终于找到ML日报的微信链接,抄之...................................... 请拜访原文链接:[谷歌机器翻译破世界纪录]仅用Attention模型,无需CNN和RNN. ...

  9. 【MySQL】ERROR 1005: Can't create table (errno: 150)的错误解决办法

    在mysql 中建立引用约束的时候会出现MySQL ERROR 1005: Can't create table (errno: 150)的错误信息结果是不能建立 引用约束. 出现问题的大致情况 1. ...

  10. json-lib与Jackson的区别和用法分析

    一.Jackson概述 1.jackson包和版本 Jackson fasterxml和codehaus的区别: 他们是Jackson的两大分支.也是两个版本的不同包名.Jackson从2.0开始改用 ...