《引用与内存管理》PPT课件

《引用与内存管理》PPT课件

ID:41186240

大小:499.51 KB

页数:14页

时间:2019-08-18

《引用与内存管理》PPT课件_第1页
《引用与内存管理》PPT课件_第2页
《引用与内存管理》PPT课件_第3页
《引用与内存管理》PPT课件_第4页
《引用与内存管理》PPT课件_第5页
资源描述:

《《引用与内存管理》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第17章引用与内存管理杨章伟e-mail:yang505412@163.com课程内容安排引用引用的操作动态内存分配const引用指针与引用的区别小结习题引用引用(reference)是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。引用作为对象的另一名字,在实际程序中,引用主要用做函数的形式参数。简单来说,引用是一种复合类型(compoundtype),即用其他类型定义的类型,通过在变量名前添加“&”符号来定义。在引用的情况下,每一种引用类型都关联到

2、某一其他类型。不能定义引用类型的引用,但可以定义任何其他类型的引用。引用是C++的初学者比较容易产生迷惑的概念,引用引入了对象的一个同义词,引用只是绑定的对象的另一名字,作用在引用上的所有操作事实上都是作用在该引用绑定的对象上。声明引用简单地说,引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用其实是变量的另一个名字。因此,与变量同样,在使用引用前也需要对其进行声明,引用的声明语句如下:类型标识符&引用名=目标变量名;其中,参数说明如下。类型标识符是指目标变量的类型。&在此不

3、是求地址运算,而是起标识作用。“=”后的目标变量名是引用的目标,声明引用时,必须同时对其进行初始化,即为其赋值,否则会产生编译错误。引用的操作声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。引用作为函数参数:引用在C++中引入,其中的一个重要作用就是作为函数的参数。引用作为返回值:引用作为函数的返回值对函数有一定的要求,它要求函数定义时要按以下格式来定义:类型标识符&函数名(形参列表及类型说明){函

4、数体}动态内存分配动态内存分配是指在程序的运行期间可以根据实际需要随时申请内存和释放内存。实行动态内存管理可以节省内存空间,提高程序运行效率。C++中,提供了两种运算符进行动态内存管理:new和delete运算符。将new运算符与delete运算符一起使用,就可以直接进行动态内存的申请和释放。申请动态内存C++中,new运算符用于申请所需的内存单元,返回指定类型的一个指针,在有些参考资料中也称为创建内存单元。一般来说,new运算符的语法格式为:指针=new数据类型;其中,指针应预先声明,指针指向的数据类

5、型与new后的数据类型相同。若申请成功,则返回分配单元的首地址给指针;否则(比如没有足够的内存空间)返回0(一个空指针)。例如,下列语句申请一个整型数据空间:int*p;p=newint;执行上述语句后,系统将自动根据int类型的空间大小开辟一个内存单元,用来保存int型数据,并将地址保存在指针p中。释放空间与new运算符相反,delete运算符是释放new申请到的内存。即当程序中不再需要使用运算符new创建的某个内存单元时,就必须用运算符delete来删除它,其语法格式为:delete指针;//释放非

6、数组内存单元delete[常量]指针;//释放数组内存单元其中,指针是指向需要释放的内存单元的指针的名字。并且delete只是删除动态内存单元,并不会将指针本身删除。释放对象的不同,delete的语法格式也不同。数组内存单元的释放一定要带“[常量]”部分,常量告诉delete数组有多少个元素。如果没有带“[常量]”部分,则只释放数组的第一个元素占据的内存单元。malloc和free库函数有过C语言学习经验的读者应该知道,malloc和free是C语言的标准库函数。前面介绍的new和delete是C++的

7、运算符。这两种形式都可用于申请动态内存和释放内存。既然库函数malloc()和free()可以实现动态内存的管理,那为什么还要new和delete运算符呢?这是因为对于非内部数据类型的对象而言,只用库函数malloc()和free()无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc()和free()是库函数而不是运算符,它们不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc和free函数。因此C++语言需要一个能完

8、成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。const引用引用也可以在前面加上const修饰符,称为const引用,用以区别普通的C++引用。这里将const引用单独列出是由于与普通的C++引用不同。简单地说,const引用表示指向const对象的引用,而非const引用表示指向非const对象的引用。例如,下面语句定义了常量ival和const引用:constintival=1024;/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。