- 1、本文档共151页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C中的面向对象技术
03 C++中的面向对象技术(OO) 03.01数据封装与数据隐藏 03.02导出类和继承性 03.03多态性和虚拟函数 03.01数据封装与数据隐藏 1.过程语言、数据抽象、封装和数据隐藏 2.C++的类和对象 3.构造函数和析构函数 4. 友元和静态成员 03.01数据封装与数据隐藏 1.过程语言、数据抽象、封装和数据隐藏 例子 数据抽象 数据封装和隐藏 面向过程 面向对象 面向对象 03.01数据封装与数据隐藏 2.C++的类和对象 类的定义 结构体类型 内联成员函数 对象 对象的使用 类作用域、类类型的作用域和对象的作用域 类的嵌套 类的对象引用私有数据成员 成员函数的重载 this 指针 ★const 、volatile对象和成员函数 const成员函数 volatile成员函数 ★指向类成员的指针 指向类中数据成员的指针变量 指向类中成员函数的指针变量 03.01数据封装与数据隐藏 3.构造函数和析构函数 ★构造函数和析构函数 ★构造函数 局部对象、静态对象和全局对象的初始化 缺省的构造函数 构造函数与new运算符 ★析构函数 析构函数的特点 delete运算符与析构函数 对象的存储类型与构造函数及析构函数 动态构造及析构对象数组 缺省的析构函数 实现类型转换的构造函数 完成拷贝功能的构造函数 ★构造函数与对象成员 构造函数对对象成员初始化 03.01数据封装与数据隐藏 4.友元和静态成员 ★友元函数 ★友元类 ★静态成员 ★静态成员函数 END 在程序的执行过程中,对象如果用new运算符开辟了空间,则在类中应该定义一个析构函数,并在析构函数中使用delete删除由new分配的内存空间。因为在撤消对象时,系统自动收回为对象所分配的存储空间,而不能自动收回由new分配的动态存储空间。 class Str{ char *Sp; int Length; public: Str(char *string) { if(string){ Length=strlen(string); Sp=new char[Length+1]; strcpy(Sp,string); } else Sp=0; } void Show(void){ coutSpendl; } ~Str() { if(Sp) delete []Sp; } }; void main(void) { Str s1(Study C++); s1.Show(); } 在构造函数中将成员数据指针指向动态开辟的内存 用初值为开辟的内存赋值 析构函数,当释放对象时收回用new开辟的空间 ‘\0’ ‘+’ ‘+’ ‘C’ ‘ ’ ‘y’ ‘d’ ‘u’ ‘t’ ‘S’ string Length=strlen(string); Sp=new char[Length+1]; Sp new开辟的空间 strcpy(Sp,string); ‘\0’ ‘+’ ‘+’ ‘C’ ‘ ’ ‘y’ ‘d’ ‘u’ ‘t’ ‘S’ 用new运算符为对象分配动态存储空间时,调用了构造函数,用delete删除这个空间时,调用了析构函数。当使用运算符delete删除一个由new动态产生的对象时,它首先调用该对象的析构函数,然后再释放这个对象占用的内存空间。 可以用new运算符为对象分配存储空间,如: A *p; p=new A; 这时必须用delete才能释放这一空间。 delete p; class A{ float x,y; public: A(float a, float b){ x=a; y=b; cout调用了构造函数\n;} void Print(void){ coutx\tyendl; } ~A() { cout调用了析构函数\n; } }; void main(void) { cout进入main()函数\n; A *pa1; pa1=new A(3.0, 5.0);//调用构造函数 pa1-Print(); delete pa1; //调用析构函数 cout退出main()函数\n; } 进入main()函数 调用了构造函数 3 5 调用了析构函数 退出main()函数 1、对于全局定义的对象(在函数外定义的对象),在程序开始执行时,调用构造函数;到程序结束时,调用析构函数。 2、对于局部定义的对象(在函数内定义的对象),当程序执行到定义对象的地方时,调用构造函数;在退出对象的作用域时,调用析构函数。 3、用static定义的局部对象,在首次到达对象的定义时调用构造函数;到程序结束时,
您可能关注的文档
最近下载
- 小学体育_队列队形教学设计学情分析教材分析课后反思.doc
- 中建项目商务策划汇报模板.pptx
- 公路中小跨径钢-混组合梁桥标准图集(制订)》技术方案报告.docx
- “设计思维与方法”教案.ppt
- 大职赛生涯闯关参考答案.docx VIP
- 2022《美宜佳公司营运资金管理存在的问题及对策研究》开题报告文献综述(含提纲)3200字.docx VIP
- 长垣市人民医院西学中培训班《方剂学》考试.pdf VIP
- 苏教版一年级科学上册4.1《自然物与人造物》(课件).pptx
- 电子商务招聘简章模板.pdf
- 统编版小学语文二年级上册第六单元 先辈伟人 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx
文档评论(0)