第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++语言的一部分,无须 包含头文件。 • 负责从堆中分配和释放内存块,但在具体操作 上两者有很大的区别