• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 深入解析C++中的引用类型

深入解析C++中的引用类型

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++强制类型转换,c++数据类型,c++类型转换,c++ bool类型,c++枚举类型的用法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

c++比起c来除了多了类类型外还多出一种类型:引用。这个东西变量不象变量,指针不象指针,我以前对它不太懂,看程序时碰到引用都稀里糊涂蒙过去。最近把引用好好地揣摩了一番,小有收获,特公之于社区,让初学者们共享。

引用指的是对一个对象的引用。那么什么是对象?在c++中狭义的对象指的是用类,结构,联合等复杂数据类型来声明的变量,如 MyClass myclass,CDialog  mydlg,等等。广义的对象还包括用int,char,float等简单类型声明的变量,如int a,char b等等。我在下文提到“对象”一词全指的是广义的对象。c++
的初学者们把这个广义对象的概念建立起来,对看参考书是很有帮助的,因为大多数书上只顾用“对象”这个词,对于这个词还有广义和狭义两种概念却只字不提。

一。引用的基本特性
首先让我们声明一个引用并使用它来初步认识引用。
例一:

第2句的意思是:声明了一个引用,名字叫rv,它具有int类型,或者说它是对int类型的引用,而且它被初始化为与int类型的对象v“绑定”在一起。此时rv叫做对象v的引用。

第3句把rv的值赋为3。引用的神奇之处就在这里,改变引用的值的同时也改变了和引用所绑定在一起的对象的值。所以此时v的值也变成了3。

第4句把v的值改为5,此时指向v的引用的值也被改成了5。所以第5句的中k的值是5+2等于7。

上述5句说明了引用及其绑定的对象的关系:在数值上它们是联动的,改变你也就改变了我,改变我也就改变了你。事实上,访问对象和访问对象的引用,就是访问同一块内存区域。

第6,7,8三句说明了引用的另一个特性:从一而终。什么意思?当你在引用的声明语句里把一个引用绑定到某个对象后,这个引用就永远只能和这个对象绑定在一起了,没法改了。所以这也是我用了“绑定”一词的原因。而指针不一样。当在指针的声明语句里把指针初始化为指向某个对象后,这个指针在将来如有需要还可以改指别的对象。因此,在第7句里把rv赋值为h,并不意味着这个引用rv被重新绑定到了h。事实上,第7句只是一条简单的赋值语句,执行完后,rv和v的值都变成了12。第8句执行完后,rv和v的值都是20,而h保持12不变。

引用还有一个特性:声明时必须初始化,既必须指明把引用绑定到什么对象上。大家知道指针在声明时可以先不初始化,引用不行。所以下列语句将无法通过编译:

</div>
从以上例子可以看到,无论这个对象有多复杂,使用该对象的引用或是使用该对象本身,在语法格式上是一样的,在本质上我们都使用了内存中的同一块区域。

取一个引用的地址和取一个对象的地址的语法是一样的,都是用取地址操作符"&"。例如:

二。引用在函数参数传递中的作用
现在让我们通过函数参数的传递机制来进一步认识引用。在c++中给一个函数传递参数有三种方法:1,传递对象本身。2,传递指向对象的指针。3,传递对象的引用。

例三:

          fun1(myclass);     //执行完函数调用后,myclass.a=20不变。
          fun2(&myclass);    //执行完函数调用后,myclass.a=60,改变了。

          fun3(myclass);     //执行完函数调用后,myclass.a=80,改变了。

          //注意fun1和fun3的实参,再次证明了:使用对象和使用对象的引用,在语法格式上是一样的。

          void fun1(MyClass mc)
          {
                mc.a=40;
                mc.method();
          }

          void fun2

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++中4种强制类型转换的区别总结
  • 简单总结C++中的修饰符类型
  • 深入讲解C++数据类型转换的相关函数的知识
  • C++中的四种类型转换
  • C++类型转换归纳总结
  • c++中的4种类型转化方式详细解析
  • 深入解析C++中的引用类型
  • 解析C++中四种强制类型转换的区别详解
  • 深入C++四种强制类型转换的总结
  • 基于c++强制类型转换的(总结)详解

相关文章

  • 2017-05-28C++中自定义sleep、条件变量sleep实例
  • 2017-05-28C语言数据结构 栈的基础操作
  • 2017-05-28C语言中的数组和指针汇编代码分析实例
  • 2017-05-28C++输入输出注意事项总结
  • 2017-05-28C++编程中将引用类型作为函数参数的方法指南
  • 2017-05-28简单谈谈C++ 头文件系列之(iosfwd)
  • 2017-05-28解析如何利用switch语句进行字符统计
  • 2017-05-28C#复制和深度复制的实现方法
  • 2017-05-28将CString字符串输入转化成整数的实现方法
  • 2017-05-28C++设计模式之适配器模式

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++基础入门教程(三):数组、字符串、结构体、共用体
    • C++开发在IOS环境下运行的LRUCache缓存功能
    • C++中求旋转数组中的最小数字(经典面试题)
    • C语言中计算正弦的相关函数总结
    • 详解C++中的指针结构体数组以及指向结构体变量的指针
    • C++ 中placement new 操作符使用方法
    • C语言顺序表实现代码排错
    • C语言在屏幕上输出杨辉三角
    • 总结C语言中const关键字的使用
    • C++ Vector用法深入剖析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有