C++第9章上.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 关于类和对象的进一步讨论 认真复习: P99-105 P115-123 为什么需要构造方法? 9.1 构造函数 9.1.2 构造函数的作用 9.1.3 带参数的构造函数 构造函数首部的一般格式: 构造函数名(类型1 形参1,类型2,形参2…) 定义对象的一般格式为 类名 对象名(实参1,实参2,…); 9.1.4 用参数初始化表对数据成员初始化 9.1.5 构造函数的重载 9.1.6 使用默认参数的构造函数 Box(int x=10,int y=10,int z=10); Box(); //无参的构造函数 Box(int x,int y); //重载 Box box1; //调用第一个还是第2个 Box box2(15,30); //调用第一个还是第3个 复习 全局变量在定义时分配内存 整个程序结束时释放内存 局部变量在函数调用时分配内存 函数调用结束释放内存 auto变量 在定义变量时分配内存 在函数退出时:auto变量会被销毁 9.2 析构函数 9.3 调用构造函数和析构函数的顺序 9.4 对象数组 9.5 对象指针 9.5.1 指向对象的指针 9.5.2 指向对象成员的指针 f (int a) { auto int b=0; static int c=3; b=b+1; c=c+1; return(a+b+c); } int main(void) { int a=2,i; for (i=0;i3;i++) printf (%d ,f(a)); return 0; } 用static 声明局部变量 7 8 9 定义:在类名前加~作为函数名的函数,其作用与构造函数相反。 Box(); ~Box(); 没有返回值,也没有参数。它在对象结束时自动执行。 程序执行析构函数: ①auto自动局部对象:当这个函数被调用结束时,对象应该释放,在对象释放前自动执行析构函数。 ②static局部对象:在main函数结束或调用exit函数结束程序时,才调用static局部对象的析构函数。 ③全局对象:则在程序的流程离开其作用域时(如main函数结束或调用exit函数) 时,调用该全局对象的析构函数。 ④new运算符动态地建立的对象:当用delete运算符释放该对象时,先调用该对象的析构函数。 例9.5 包含构造函数和析构函数的C++程序。 本函数作用:输出 构造函数的定义 析构函数的定义 注:一个类只能有一个析构函数 对象stud1和stud2的生命期到哪结束? 一般情况下: 先构造的后析构,后构造的先析构 只适合同一类存储类别的对象 适用条件: 综合各种情况归纳如下: (1) 全局对象:它的构造函数在文件中的所有函数(包括main函数)执行之前调用。当main函数执行完毕或调用exit函数时(此时程序终止),调用析构函数。 (2) 局部自动对象:则在建立对象时调用其构造函数。如果函数被多次调用,则在每次建立对象时都要调用构造函数。在函数调用结束、对象释放时先调用析构函数。 (3) 静态(static)局部对象:则只在程序第一次调用此函数建立对象时调用构造函数一次,在main函数结束或调用exit函数结束程序时,才调用析构函数。 一个班有50个学生,每个学生的属性包括姓名、性别、年龄、成绩等。如果为每一个学生建立一个对象,需要分别取50个对象名。 定义一个“学生类”对象数组,每一个数组元素是一个“学生类”对象。 数组(Array):是可以通过数组名和下标访问的同类型有序数据元素的集合。 一维数组定义: 类型说明符 数组名 [常量表达式]; int arr[10]; 对象数组:每一个元素都是同类的对象 对象数组定义: 类型说明符 数组名 [常量表达式]; Student stud[50]; /*假设已声明了Student类,定义stud数组,有50个元素*/ 构造函数中只有一个参数:(可在定义数组时直接提供实参) Student stud[3]={60,70,78}; 如: Student∷ Student(int=1001,int=18,int=60); Student stud[3]={1005,60,70}; 容易引起歧义 Student stud[3]={60,70,78,45}; 构造函数有多个参数: 对象数组的初始化 3个实参分别传递给3个数组元素的构造函数 实参个数不能超过数组元素个数 在定义对

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档