- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象的程序设计 二、new运算符 思考:new Class与new Class[]在内存中形成的结构有什么不同? 面向对象的程序设计 三、delete 运算符 new 动态分配的对象,需要由delete来释放。 释放时自动调用析构函数 需要指出释放一个对象,还是数组 delete p; //释放掉指针p指向的对象 delete []p;//释放掉以指针p作为首地址的一系列对象(new分配时会自动保存数量信息) 面向对象的程序设计 四、注意事项 使用后及时销毁 与malloc/free类似,用new建立的对象必须在需要销毁时用delete销毁,否则在程序退出前将一直存在。 示例19 面向对象的程序设计 四、注意事项 内存泄漏(Memory Leak) 野蛮指针 (Brutal Pointer) 示例20 面向对象的程序设计 五、课后练习 使用面向对象以及new/delete运算符,改写结构体一章所学的链表程序。 8.8 友元 面向对象的程序设计 私有成员是对类成员访问的一种限制,有时也可以通过一些方法,放宽这种限制,其中一种方法就是友元(friend关键字) 面向对象的程序设计 一、友元函数 可以是普通函数,也可以是其他类的成员函数 说明友元时,要在一个类的定义中,用friend 来说明函数原型 class Point{ int x,y; public: Point(int x,int y); friend int compare(Point p1, Point p2); }; int compare(Point p1, Point p2) { return p1.x*p1.x+p1.y*p1.y-p2.x*p2.x-p2.y*p2.y; } 示例21 面向对象的程序设计 二、友元类 在一个类的定义中,用friend来说明一个类名,被说明类的所有成员函数都是该类的友元函数 面向对象的程序设计 二、构造函数 class CDate { int year,month,day; public: CDate(int y,int m,int d); }; CDate::CDate(int y,int m,int d) { year=y; month=m; day=d; } //两种调用方式 CDate day1(2011, 5, 1); CDate day2 = CDate(2011, 6, 1); 构造函数的例子 示例4 面向对象的程序设计 二、构造函数 可以通过重载的方式,构造多个参数不同的构造函数,用来以不同的方式初始化对象 除了最普通的构造函数,还有几种常见的不同类型的构造函数 示例5 面向对象的程序设计 三、具有缺省参数值的构造函数 与普通函数一样,构造函数可以声明参数的缺省值 在函数声明中给出缺省值 class CDate { CDate(int y=2011,int m=5,int d=1); }; CDate day1; CDate day2(2010); CDate day3(2008,6); 示例6 面向对象的程序设计 四、初始化列表 也可以不在构造函数中显式的赋值,而是在构造函数定义中的参数列表后加冒号,然后对成员逐个赋值,这一机制叫做初始化列表。 列表中初始化的顺序是类定义时成员声明的顺序,而不是列表中的顺序 初始化列表的效率很高,并且某些特殊的成员必须在这里得到值,而不能在函数体内赋值。 CDate::CDate(int y, int m, int d): year(y), month(m), day(d) { } 面向对象的程序设计 五、缺省的构造函数 没有任何参数的构造函数 当定义一个对象切没给出任何参数值是自动调用该构造函数 CClock:: CClock(){seconds=0;} CClock clock1; 一个缺省的构造函数,和一个全部参数值都要缺省值的构造函数不能同时存在 如果没有任何构造函数,会自动生成一个缺省构造函数,如果已经定义了任何一个构造函数,就不会自动生成了。 示例7;8 面向对象的程序设计 六、拷贝构造函数 构造函数的参数是同类的引用 class X{ public: X(X); 或 X(const X );}; 用途: 用一个同类对象来初始化 为什么要使用引用? 用一个对象“初始化出一个相同的对象”,与建立一个新对象再赋值其意义是不同的。 如果没有定义拷贝构造函数,编译系统会自动生成一个。进行逐对成员的赋值(byte-wise) 示例9 面向对象的程序设计 六、拷贝构造函数 思考:在什么情况下自动生成的拷贝构造函数会失效? 示例10 面向对象的程序设计 七、析构函数(Destructor) 思考:下
您可能关注的文档
- GPC5水溶性GPC解析.ppt
- Arcgis流域图制作补充解析.doc
- GPCR通路激活剂解析.doc
- Arcgis培训资料5属性表的处理操作教程解析.ppt
- ARDUINO教程第一讲解析.ppt
- ARIMA模型与股价指数走势解析.ppt
- ARM和嵌入式系统设计1解析.ppt
- Arrhenius公式解析.ppt
- ASCII码键盘编码电路设计解析.doc
- GPRS数据采集器使用说明解析.doc
- 2024年学校党总支巡察整改专题民主生活会个人对照检查材料3.docx
- 2025年民主生活会个人对照检查发言材料(四个带头).docx
- 县委常委班子2025年专题生活会带头严守政治纪律和政治规矩,维护党的团结统一等“四个带头方面”对照检查材料四个带头:.docx
- 巡察整改专题民主生活会个人对照检查材料5.docx
- 2024年度围绕带头增强党性、严守纪律、砥砺作风方面等“四个方面”自我对照(问题、措施)7.docx
- 2025年度民主生活会领导班子对照检查材料(“四个带头”).docx
- 国企党委书记2025年度民主生活会个人对照检查材料(五个带头).docx
- 带头严守政治纪律和政治规矩,维护党的团结统一等(四个方面)存在的问题整改发言提纲.docx
- 党委书记党组书记2025年带头增强党性、严守纪律、砥砺作风方面等“四个带头”个人对照检查发言材料.docx
- 2025年巡视巡察专题民主生活会对照检查材料.docx
最近下载
- 《ISO 55013-2024 资产管理-数据资产管理指南》解读和实施指导材料(雷泽佳编制-2024).pdf VIP
- 肿瘤放化疗病人并发症护理课件.pptx VIP
- 新概念第一册lesson79.pptx VIP
- 政府采购机票操作手册.pdf VIP
- 二级展开式斜齿圆柱齿轮减速器设计说明书.pdf
- 字节跳动产品运营专员岗面试题库参考答案和答题要点.docx VIP
- 小学英语单词(带音标).pdf VIP
- 字节跳动运营数据分析师岗面试题库参考答案和答题要点.docx VIP
- 八年级数学上册专题15 半角模型证全等(原卷版).docx VIP
- 字节跳动新媒体运营专员岗面试题库参考答案和答题要点.docx VIP
文档评论(0)