网站大量收购闲置独家精品文档,联系QQ:2885784924

第9讲+动态内存分配.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例9-6 对象的深拷贝 * #include iostream #include cassert using namespace std; class Point { //类的声明同例6-16 …… }; class ArrayOfPoints { public: ArrayOfPoints(const ArrayOfPoints pointsArray); //其他成员同例6-18 }; ArrayOfPoints::ArrayOfPoints(const ArrayOfPoints v) { size = v.size; points = new Point[size]; for (int i = 0; i size; i++) points[i] = v.points[i]; } int main() { //同例6-20 } 9.3 深拷贝与浅拷贝 例9-6 (续) * 程序的运行结果如下: Please enter the number of points:2 Default Constructor called. Default Constructor called. Default Constructor called. Default Constructor called. Copy of pointsArray1: Point_0 of array2: 5, 10 Point_1 of array2: 15, 20 After the moving of pointsArray1: Point_0 of array2: 5, 10 Point_1 of array2: 15, 20 Deleting... Destructor called. Destructor called. Deleting... Destructor called. Destructor called. 9.3 深拷贝与浅拷贝 * * * * * 第九讲 动态内存分配 教材:《C++语言程序设计》(第4版) 第6章 6.3~6.5、6.8 清华大学 郑 莉 目录 9.1 动态内存分配 9.2 用vector创建数组对象 9.3 深拷贝与浅拷贝 9.4 深度探索 9.5 小结 * * 9.1 动态内存分配 动态申请内存操作符 new new 类型名T(初始化参数列表) 功能:在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值。 结果值:成功:T类型的指针,指向新分配的内存;失败:抛出异常。 * 9.1 动态内存分配 释放内存操作符delete delete 指针p 功能:释放指针p所指向的内存。p必须是new操作的返回值。 例9-1(教材例6-16) 动态创建对象举例 * #include iostream using namespace std; class Point { public: Point() : x(0), y(0) { coutDefault Constructor called.endl; } Point(int x, int y) : x(x), y(y) { cout Constructor called.endl; } ~Point() { coutDestructor called.endl; } int getX() const { return x; } int getY() const { return y; } void move(int newX, int newY) { x = newX; y = newY; } private: int x, y; }; 9.1 动态内存分配 例9-1 (续) * int main() { cout Step one: endl; Point *ptr1 = new Point;//调用缺省构造函数 delete ptr1; //删除对象,自动调用析构函数 cout Step two: endl; ptr1 = new Point(1,2); delete ptr1; return 0; } 9.1 动态内存分配 运行结果: Step One: Default Constructor called. Destructor called. Step Two: Constructor called. Destructor called. * 9.1 动态内存分配 申请和释放动态数组 分配:new 类型名T [ 数组长度 ] 数组长度可以是任何表达式,在运行时计算 释放:delete[] 数组名p

文档评论(0)

xiaohuer + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档