《面向对象程序设计》课程教学资源(课件讲稿)第14章 堆与拷贝构造函数(PPT)

第14章堆与拷贝构造函数
第14章 堆与拷贝构造函数

目录堆14.114.2需要new和delete的原因14.3分配堆对象14.4拷贝构造函数14.5默认拷贝构造函数14.6浅拷贝与深拷贝14.7临时对象14.8无名对象14.9构造函数用于类型转换
14.1 堆 14.2 需要new和delete的原因 14.3 分配堆对象 14.4 拷贝构造函数 14.5 默认拷贝构造函数 14.6 浅拷贝与深拷贝 14.7 临时对象 14.8 无名对象 14.9 构造函数用于类型转换

第14章堆与拷贝构造函数在C++中,堆分配的概念得到了扩展不仅C++的关键字new和delete可以分配和释放堆空间。而且可以通过new建立的对象要调用构造函数。通过delete删除对象也要调用析构函数另外,当对象被传递给函数或者对象从函数返回的时候,会发生对象的拷贝
• 在C++中,堆分配的概念得到了扩展。 • 不仅C++的关键字new和delete可以分配和释放堆 空间。 • 而且可以通过new建立的对象要调用构造函数。 • 通过delete删除对象也要调用析构函数。 • 另外,当对象被传递给函数或者对象从函数返 回的时候,会发生对象的拷贝

14.1 堆C++程序的内存格局通常分为四个区(1)全局数据区(data area);(2)代码区(code area);(3)栈区(stack area);(4)堆区(即自由存储区)(heaparea)。全局数据区:存放全局变量、静态数据、常量。,代码区:存放类成员函数和非成员函数代码
• C++程序的内存格局通常分为四个区: ✓ (1)全局数据区(data area); ✓ (2)代码区(code area); ✓ (3)栈区(stack area); ✓ (4)堆区(即自由存储区)(heap area)。 • 全局数据区:存放全局变量、静态数据、常 量。 • 代码区:存放类成员函数和非成员函数代码

14.1 堆,栈区:存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。余下的空间都被作为堆区头文件malloc.h中声明了:void * malloc(size-t) ;/ void free(void *) ;操作符new和delete是C++语言的一部分,无须包含头文件。,负责从堆中分配和释放内存块,但在具体操作上两者有很大的区别
• 栈区:存放运行函数而分配的局部变量、函数 参数、返回数据、返回地址等。 • 余下的空间都被作为堆区。 • 头文件malloc.h中声明了: ✓ void * malloc(size-t); ✓ void free(void *); • 操作符new和delete是C++语言的一部分,无须 包含头文件。 • 负责从堆中分配和释放内存块,但在具体操作 上两者有很大的区别

14.1堆,操作堆内存时,如果分配了内存,就有责任回收它。否则运行的程序将会造成内存泄漏这与函数在栈区分配局部变量有本质的不同对C++来说,管理堆区是一件十分复杂的工作需频繁地分配和释放不同大小的堆空间,将会产生堆内存碎块
• 操作堆内存时,如果分配了内存,就有责任 回收它。 • 否则运行的程序将会造成内存泄漏。 • 这与函数在栈区分配局部变量有本质的不同。 • 对C++来说,管理堆区是一件十分复杂的工作, • 需频繁地分配和释放不同大小的堆空间,将 会产生堆内存碎块

14.2需要new和delete的原因。在c++中不使用malloc()函数的一个原因是:√它在分配空间的时候不能调用构造函数√类对象的建立是分配空间、构造结构以及初始化的三位一体,√它们统一由构造函数来完成
• 在C++中不使用malloc()函数的一个原因是: ✓ 它在分配空间的时候不能调用构造函数。 ✓ 类对象的建立是分配空间、构造结构以及 初始化的三位一体, ✓ 它们统一由构造函数来完成

14.2需要new和delete的原因例如:下面的代码用malloc()分配对象空间classTdate1public:Tdate();SetDate(int m = 1, int d = 1, int y = 1998) ;protected:int month;intday ;intyear ;:
例如:下面的代码用malloc( )分配对象空间 class Tdate { public: Tdate( ); SetDate( int m = 1, int d = 1, int y = 1998) ; protected: int month ; int day ; int year ; } ;

14.2需要new和delete的原因Tdate : : Tdate ()(month = 1 ;day = 1;year = 1 ;void Tdate : : SetDate( int m , int d , int y)Iif(m>0&&m0&&d0&&y<3000)year =y;11
Tdate : : Tdate ( ) { month = 1 ; day = 1; year = 1 ; } void Tdate : : SetDate( int m , int d , int y ) { if ( m > 0 && m 0 && d 0 && y < 3000 ) year = y ; }

14.2需要new和delete的原因void fn()Tdate*pD;//仅仅是个指针,没有产生对象并不调用构造函数pD =(Tdate *)malloc(sizeof Tdate);二并不调用析构函数free(pD) ;1注:指针pD的声明不调用其构造函数,因为pD没有指向任何东西
void fn ( ) { Tdate * pD ; //仅仅是个指针,没有产生对象 //并不调用构造函数 pD = ( Tdate * )malloc( sizeof Tdate ) ; //. free(pD) ; //并不调用析构函数 } 注:指针pD的声明不调用其构造函数,因为pD没有指向 任何东西
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《面向对象程序设计》课程教学资源(课件讲稿)第13章 面向对象程序设计(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第12章 构造函数(PPT).ppt
- 《C语言》课程资源_智慧树使用手册_学生端使用手册.ppt
- 《C语言》课程教学课件(PPT讲稿)第25次课(函数定义、调用、参数传递、返回值).ppt
- 《C语言》课程教学课件(PPT讲稿)第27次课(函数进一步讨论).ppt
- 《C语言》课程教学课件(PPT讲稿)第29次课 结构体.ppt
- 《C语言》课程教学课件(PPT讲稿)第31次课(编译预处理命令 位运算 文件).ppt
- 《C语言》课程教学资源(教程讲义)C语言程序设计新思路(1-3章).pdf
- 《C语言》课程教学课件(PPT讲稿,教程)第1章 引论.ppt
- 《C语言》课程教学课件(PPT讲稿,教程)第2章 基本的数据与运算.ppt
- 《C语言》课程教学课件(PPT讲稿,教程)第5章 循环结构程序设计.ppt
- 《C语言》课程教学课件(PPT讲稿,教程)第6章 数组.ppt
- 《C语言》课程教学课件(PPT讲稿,教程)第9章 函数.ppt
- 《C语言》课程教学课件(PPT讲稿,教程)第10章 函数的进一步讨论.ppt
- 《C语言》课程教学课件(PPT讲稿,教程)第11章 编译预处理命令.ppt
- 《C语言》课程教学课件(PPT讲稿,教程)第12章 结构体.ppt
- 《C语言》课程教学课件(PPT讲稿,教程)第14章 文件.ppt
- 《C语言》课程教学资源(教程讲义)C语言主教材附录.pdf
- 《C语言》课程教学资源(教程讲义)第4章.pdf
- 《C语言》课程教学资源(教程讲义)第5章.pdf
- 《面向对象程序设计》课程教学资源(课件讲稿)第15章 静态成员函数与友元(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第16章 继承(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第17章 多态(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第18章 运算符重载(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第19章 IO流(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第20章 模板(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第21章 异常处理(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第10章 结构(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第11章 类(PPT).ppt
- 《面向对象程序设计》课程教学资源(PPT课件)第12章 多态性.ppt
- 《面向对象程序设计》课程教学资源(PPT课件)第13章 模板与异常处理.ppt
- 《面向对象程序设计》课程教学资源(PPT课件)第14章 标准库和输入输出流.ppt
- 《面向对象程序设计》课程教学资源(PPT课件)第15章 链表.ppt
- 《面向对象程序设计》课程教学资源(PPT课件)第9章 类和对象(一).ppt
- 《面向对象程序设计》课程教学资源(PPT课件)第10章 类和对象(二).ppt
- 《面向对象程序设计》课程教学资源(PPT课件)第11章 继承和派生.ppt
- 山东理工大学:《面向对象程序设计》课程实验指导书(C++).pdf
- 山东理工大学:《计算机绘图AutoCAD》课程教学资源(PPT课件)第4章 AutoCAD尺寸标注.pdf
- 山东理工大学:《计算机绘图AutoCAD》课程教学资源(PPT课件)第5章 AutoCAD绘制机械图样表达.pdf
- 山东理工大学:《计算机绘图AutoCAD》课程教学资源(PPT课件)第6章 AutoCAD绘制机械工程图.ppt
