C++一些知识难点

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

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

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

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

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

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

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

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

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

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

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

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

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

什么时候须要“引用”?

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

时间: 2024-12-25 11:46:32

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

Python初学者的29个知识难点汇总,推荐新手收藏!

初学Python的人总会遇到这样或者那样的问题,Python小编总结了Python初学者的常见的29个知识难点,具体如下: 1 在cmd下 盘与盘之间的切换 直接 D或d: 就好 2 查找当前盘或者文件下面的目录 直接 dir 3 想在一个盘下进去一个文件夹,用cd空格目标文件 cd p 4 写文件的第一个字母后 按tab键自动补全 如果有多个p开头的则在按tab 会在所有之间切换 5 d:切盘 dir 查找目录 cd 进去目标文件(相当于双击) 6 往上走一层 cd .. 走两层 cd ../

Java学习方法

[原创 - 尚学堂科技 - 马士兵老师] JAVA自学之路 一:学会选择 [转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_1.html] 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生, 不要把自己的将来交给别人,学会

实验8 SQLite数据库操作

课程名称 基于Android平台移动互联网开发 实验日期 2016年4月15日 实验项目名称 数独游戏界面设计 实验地点 S3010 实验类型 □验证型    √设计型    □综合型 学  时 一.实验目的及要求(本实验所涉及并要求掌握的知识点) [目的] 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面. [要求] 程序主界面是通讯录的目录显示手机上联系人的名称.点击联系人的姓名可以显示联系人的详细信息.在按了MEMU键之后会弹出

Linux实验3

一.学习目标 1. 理解二进制在计算机中的重要地位 2. 掌握布尔运算在C语言中的应用 3. 理解有符号整数.无符号整数.浮点数的表示 4. 理解补码的重要性 5. 能避免C语言中溢出,数据类型转换中的陷阱和可能会导致的漏洞 二.学习资源 (提示:可选项,如有其他相关资源请在此说明): 1. 教材:第二章<信息的表示和处理>,详细学习指导见这. 2. 课程资料:https://www.shiyanlou.com/courses/413   实验三,课程邀请码:W7FQKW4Y 3. 教材中代码

5233杨光--Linux第一次实验

学习计时:共14小时 读书:2小时 代码:7小时 作业:2小时 博客:3小时 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Linux中用户管理命令/系统相关命令/文件目录相关命令/打包压缩相关命令/比较合并相关命令/网络相关命令等 4. 熟练应用“搜索”进行举一反三的学习 二.学习资源 1. 课程资料:https://www.shiyanlou.com/courses/413   实验一,课程邀请码:W7FQKW4Y 2. Lin

马士兵_JAVA自学之路(为那些目标模糊的码农们)

转载自:http://blog.csdn.net/anlidengshiwei/article/details/42264301 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去

【转】JAVA自学之路

JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧. 每个培训机构都会宣传自己的好处,并不能说明大的趋势. 一些新闻文章很有可能是枪手写的,不必太过相信.国外背景的

Linux第二次报告20135221

学习计时:共xxx小时 读书: 代码: 作业: 博客: 一.学习目标 1. 熟悉Linux系统下的开发环境   2. 熟悉vi的基本操作   3. 熟悉gcc编译器的基本原理   4. 熟练使用gcc编译器的常用选项   5 .熟练使用gdb调试技术   6. 熟悉makefile基本原理及语法规范   7. 掌握静态库和动态库的生成 二.学习资源 1. 教材:第一章,第七章 2. <嵌入式Linux应用程序开发标准教程>第三章3.1-3.5 3. 课程资料:https://www.shiya

[转载] JAVA自学之路

原文链接http://blog.csdn.net/mengxin846/article/details/2219844 虽然文章有点旧但还是有些启发的,譬如要事第一,好读书不求甚解. JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当 成学生