- 40
- 0
- 约1.61万字
- 约 59页
- 2018-10-30 发布于浙江
- 举报
计算机程序设计vc完整精美
通常情况下,析构函数无须定义,也无须调用,由系统自动产生,自动调用。 但在构造函数或程序的执行过程中,用new运算符为对象的指针成员申请了空间动态时,由于动态空间是无法自动释放的,在类中必须显式定义析构函数,并在析构函数中使用delete运算符收回为指针成员所分配的存储空间。 6.4.2 析构函数的使用 class String{ char *str;public: String(char *p){ if(p){ str=(char *)new char[strlen(p)+1]; strcpy(str,p); } else str=0; } void print(){ coutstr‘\n’; } ~String(){ if(str)delete[ ]str;} //A}; void main(){ String pp(“VC++程序设计”); pp.print();} 程序解读: 能否省略A行的“[ ] ”? 6.4.2 析构函数的使用 例6-10 在析构函数中释放动态空间。 class Obj{ int val;public:Obj(){ Obj(int i){val=i;coutval‘\t’“构造1!\n”;} ~Obj(){cout“析构1!\n”;}}; class Con{int data; Obj one,two;public: Con(int i,int j,int k): one(k),two(i+j) { data=i; coutdata‘\t’“构造2!\n”;} ~Con(){cout“析构2!\n;}}; void main(void){Con c(100,200,400); } 程序运行结果: 400 构造1!300 构造1!100 构造2!析构2!析构1!析构1! 构造函数根据产生对象的顺序依次调用,析构函数的调用顺序通常与构造函数相反。 6.4.2 析构函数的使用 例6-11 构造函数与析构函数的调用顺序。 建立对象时调用构造函数,撤消对象时调用析构函数。不同存储类型的对象,其产生和释放情况是不一样的,调用构造函数和析构函数情况也就不同,如表7-1所示。 表7-1构造函数和析构函数的调用时间 对象类型 构造函数调用 析构函数调用 全局对象 程序运行 程序结束 局部对象 对象定义处 离开块 静态局部对象 第一次执行对象定义处 程序结束 new创建的动态对象 创建对象处 delete显式撤消 6.4.3 调用构造函数及析构函数 class Point{ int x,y;public: Point(){ x=0;y=0; cout” 全局!\t”;} Point(int a){x=a;y=0;cout” 局部!\t”;} Point(int a,int b){x=a;y=b;cout” 动态!\t”;} Point(int a,int b,int c){x=a+b;y=c; cout” 静态!\n”;} ~Point(){coutx’\t’y’\t’” 析构函数!\n”;}}P1;Point P2;void main(){ Point P3(1),*P4; P4=new Point(2,4); for(int i=0;i5;i++) static Point P5(4,6,9); delete P4; cout主函数结束!endl;} 程序运行结果: 全局! 全局! 局部! 动态! 静态!2 4 析构函数!主函数结束! 1 0 析构函数!10 9 析构函数!0 0 析构函数!0 0 析构函数! 6.4.3 调用构造函数及析构函数 例6-12 不同类型对象构造函数和析构函数的调用 类的定义——怎样定义一个类; 构造函数——怎样初始化对象,给数据成员赋值,包括: 数据成员是普通变量时,直接赋值:数据成员=形参; 数据成员是一维数组时,用循环语句逐个元素赋值; 数据成员是二维数组时,用嵌套的循环语句逐个元素赋值; 数据成员是字符数组时,用字符串拷贝函数赋值; 数据成员是指针变量时,先为其分配动态空间,再根据动态空间的形态对动态空间赋值;不能直接对指针变量赋值。 当用已有对象初始化新建对象时,应用拷贝功能构造函数. 析构函数——释放对象空间,特别是数据成员申请了动态空间时,要用delete收回动态空间。 课堂小结 本章介绍了面向对象编程的基本概念和方法,重点: 测试函数——用定义的类说明对象,用对象调用成员函数完成测试。注意: 说明对象的参数要与构造函数的参数一致; 调用方式
您可能关注的文档
- 药物分析生物制品分析.pptx
- 药物制剂技术教案(新版).pdf
- 苹果销售技巧及功能.pptx
- 药学服务中沟通技巧及案例分析.pdf
- 药物化学题库及答案重新整理过.doc
- 药物常见化学结构基础知识.pdf
- 莱州市配套练习册答案六年级下(鲁教版).doc
- 莎士比亚の高考真题,名人名言英语.ppt
- 菏泽市小学语文教师招聘考试试题及答案.doc
- 药物化学:解热镇痛药和非甾体抗炎药.ppt
- DB3205_T 1084-2023 跨境电子商务出口运营人员职业能力要求.docx
- T∕ABI 0003-2025 分布式标识技术要求.docx
- GTCC-009-2021 弹条Ⅰ型、Ⅱ型扣件弹条-铁路专用产品质量监督抽查检验实施细则.docx
- DB37∕T 5297-2024 顶管工程技术规程.docx
- DB41 771-2012 金属非金属矿山在用空气压缩机安全检测检验规范.docx
- DB37∕T 5281-2024 地源热泵系统工程技术规程.docx
- DB21_T 4385-2026 超低能耗建筑设计规程.docx
- DB41T 846-2013 电缆用铜包铝导体.docx
- DBJ33_T 1353-2025 装配式建筑外窗安装技术规程.docx
- DB32_T 5264-2025 城市轨道交通工程工程量清单和资产清单数据标准.docx
最近下载
- 2026年职业资格房地产经纪人房地产经纪专业基础-房地产经纪职业导论参考题库含答案解析(5卷题有答案.docx VIP
- 部编版道德与法治五年级下册复习资料.pdf VIP
- JCT2559-2020 岩棉外墙外保温系统用粘结、抹面砂浆.pdf VIP
- 外研版(三起)(2024)三年级下册英语Unit 1《Animal friends》教案(共4课时).docx VIP
- 《中华民族共同体概论》第十三讲测试题及答案.docx VIP
- 油田油气集输设计规范宣贯材料PPT.ppt VIP
- 广西桂林市2023-2024学年高一下学期期末质量检测物理试卷(含答案).docx VIP
- 中考数学总复习课件14个专题.ppt VIP
- 气田集输设计规范GB50349-2015知识培训.pptx
- 2025年全面从严治党工作报告 .pdf VIP
原创力文档

文档评论(0)