- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
构造函数 析构函数 功能 对数据成员初始化, 由系统自动调用 对象释放前的操作, 由系统自动调用 名字 类名() ~类名() 特点 无函数类型 可有参数 可以重载 无函数类型 不可有参数 不可重载 * 3.3 调用构造函数和析构函数的顺序 在使用构造函数和析构函数时,需要特别注意对它们的调用时间和调用顺序。 * 调用构造函数 调用析构函数 全局对象 静态局部对象 局部自动对象 动态对象 表1 构造函数、析构函数的调用时间表 在本文件模块中的所有函数(main函数)执行之前调用 main函数执行完或调用exit函数时 第一次函数被调用,执行到定义对象的地方时 main函数执行完或调用exit函数时 每当函数被调用,执行到定义对象的地方时 在退出对象的作用域时 用new新建对象时 用delete回收对象时 * 析构顺序: 对于同一存储类别的对象而言,调用析构函数的次序正好与调用构造函数的次序相反:先构造的后析构,后构造的先析构。相当于一个栈,先进后出。 对于不同存储类别的对象而言,先析构局部自动对象,然后是静态局部对象,然后是全局对象。 * #include iostream.h class A { float x; public: A(float a) { x=a; cout调用非缺省的构造函数:xendl; } A(){ x=0; cout调用缺省的构造函数:xendl;} ~A() { cout调用析构函数:xendl;} }; void main(void) { A a1; A a2(3.0); cout退出主函数\n; } 运行结果: 调用缺省的构造函数:0 调用非缺省的构造函数:3 退出主函数 调用析构函数:3 调用析构函数:0 * #include iostream.h class A { float x; public: A(float a) { x=a; cout调用非缺省的构造函数:xendl; } A(){ x=0; cout调用缺省的构造函数:xendl;} ~A() { cout调用析构函数:xendl;} }; void main(void) { A a1; { A a2(3.0); }//复合语句中的对象 cout退出主函数\n; } 运行结果: 调用缺省的构造函数:0 调用非缺省的构造函数:3 调用析构函数:3 退出主函数 调用析构函数:0 * #include iostream.h class A{ int x; public: A(int a=0){ x=a; cout调用构造函数:xendl;} ~A(){ cout调用析构函数:xendl; } }; A a0(60); //定义全局对象 void f( ) { cout进入f()函数\n; A a1(40); //定义自动局部对象 static A a2(20); //定义静态局部对象 } void main( ) { cout进入main函数\n; A a3; //定义自动局部对象 f(); } 先析构局部自动对象,然后是静态局部对象,然后是全局对象 运行结果: 调用构造函数:60 进入main函数 调用构造函数:0 进入f()函数 调用构造函数:40 调用构造函数:20 调用析构函数:40 调用析构函数:0 调用析构函数:20 调用析构函数:60 * 3.4 对象数组 对象数组的每一个元素都是同类的对象。 Box a[2]; 在定义对象数组时可进行初始化: 在花括号中分别写出构造函数并指定实参。 Box a[2]={ //定义对象数组 Box(10,12,15), //调用构造函数Box,初始化a[0] Box(15,18,20)//调用构造函数Box,初始化a[1] }; * class Box { public: //声明有默认参数的构造函数,用参数初始化表初始化 Box(int h=10,int w=12,int len=15): height(h),width(w),length(len) { coutConstructor: heightendl; } int volume( ){ return (height*width*length); }//计算体积 ~Box() { coutDestructor:height endl; }; private: int height, width, length; //高、宽、长 }; v
您可能关注的文档
最近下载
- 房屋建筑加固改造工程施工重点及难点分析与对策.pdf VIP
- 【基恩士】LR-W500(C) 使用说明书 (简体中文).pdf VIP
- 2025年全国危险化学品经营单位主要负责人考试试题含答案.docx VIP
- 依利特MFD3100多波长荧光检测器用户手册.pdf VIP
- 医疗气体系统施工的质量监控重点及监理措施(可编辑word版).doc VIP
- 《西门子接口模块 ET 200M IM 153 2 产品手册 中文超清版》.pdf VIP
- 压力性尿失禁的护理查房PPT课件.pptx VIP
- 九年级下册化学《金属》习题巩固.doc VIP
- 索尼sony_mdsje480_使用说明书手册.pdf VIP
- 城市管理网格员(中级)考试题库(浓缩300题).docx VIP
文档评论(0)