- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6讲(拷贝构造函数和类组合)
第6讲
教学内容
4.3 构造函数和析构函数
4.3.2拷贝构造函数
4.4 类的组合
4.4.1组合
教学重点和难点
1拷贝构造函数作用和使用方法
2类的组合的含义和使用方法
教学方法:
通过程序代码演示,详细讲解概念,举一反三,让学生理解,拷贝构造函数的作用,调用时机,特点;
另外,可以用单步调试的方法,演示,让学生观察程序的执行流程,跟踪观察类的构造函数,拷贝构造函数,析构函数,成员函数的执行顺序。
通过列举现实生活中的例子,来讲解什么是类的组合,有什么样的功能,以及组合类的构造函数的特点
教学学时
2 学时
教学过程:
一 拷贝构造函数作用和使用方法
作用:
用一个已经存在的对象(由拷贝构造函数的参数指定),去初始化同类的一个新对象
2形式:
是一种特殊的构造函数,其形参为本类的对象的引用。其形式为:
类名 (类名 对象名)
引用的理解:用引用做函数参数,在内存中并没有产生实参的副本,它是直接对实参操作
3调用时机
普通构造函数在对象创建时自动被调用,而拷贝构造函数在下列三种情况下都会被自动调用
a) 新建对象时,当用类的一个对象去初始化该类的另一个对象时,系统自动调用拷贝构造函数实现拷贝赋值
b) 若函数的形参为类对象,调用函数时,实参赋给形参时,系统自动调用拷贝构造函数
c) 当函数的返回值是类对象时,系统自动调用拷贝构造函数
4 何时需要自己编写拷贝构造函数
a)如果程序员没有为类声明拷贝构造函数,则系统就会在必要时自动生成一个默认的拷贝构造函数。 这个默认的拷贝构造函数执行的功能是:把作为初始值对象的每个数据成员都复制到新建立的对象的对应的数据成员中。
b) 当类的数据成员中有指针类型时,系统提供的默认拷贝构造函数会带来数据安全方面的隐患,此时,必须自己编写拷贝构造函数
例1:分析下列程序的运行结果,理解构造函数,析构函数,拷贝构造函数的调用时机(以教材上的时钟类为例)
//程序演示:// 拷贝构造函数的使用
#include iostream.h
class Clock
{
private:
int hour;
int minute;
int second;
public:
Clock(int h = 0 ,int m = 0 ,int s = 0);
void display();
Clock(Clock obj);//默认拷贝构造函数的形式
};
Clock:: Clock(int h ,int m ,int s )
{
hour = h;
minute = m;
second = s;
cout construct calledendl;
}
void Clock::display()
{
cout hour : minute : secondendl;
}
Clock:: Clock(Clock obj)//默认拷贝构造函数的形式
{
hour = obj.hour;
minute = obj.minute;
second = obj.second;
cout copy construct calledendl;
}
void fun1(Clock obj)
{
obj.display();
}
Clock fun2()
{
Clock obj(12,34,56);
return obj;
}
void main(void)
{
Clock one(06,30,30);
one.display();
/*Clock two(one);
//调用时机1:用一个已经存在的对象去初始化另外一个新建的对象
two.display();*/
// fun1(one);//调用时机2:函数的参数为了类的对象
// fun2().display();//调用时机3:当函数的返回值为类的对象时
二 类的组合
1 什么是类的组合:、
1)类中的数据成员是另一个类的对象,称为类的组合
我们已经习惯了,设计一个类时,类的数据成员为基本数据类型,由基本数据类型作为类的组成部件,实际上类的数据成员的类型可以为基本数据类型,也可以为自定义类型,当然也可以为类的对象,利用已有类的对象来构件新的类
2) 组合是一种通过创建一个组合了其它对象的对象,从而获得新功能的复用方法,也就是将功能委托给所组合的一个对象,从而获得新功能。?3)若在逻辑上A是B的“一部分”(a part of),则不允许B从A派生,而是要用A和其它东西组合出B。 例如眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Head应该由类Eye、Nose、Mouth、Ear组合而成,不是派生而成
您可能关注的文档
- 第2章__PL0编译程序实现.ppt
- 第2章_编写简单汇编程序.ppt
- 第2章 用户和操作系统接口.ppt
- 第2章面向对象程序设计语言——C++.ppt
- 第2讲 MATLAB矩阵与其运算.ppt
- 第2讲 Visual FoxPro数据基础.ppt
- 第2讲 命题与其关系、充分条件和必要条件.ppt
- 第2章 面向对象pascal语言.ppt
- 第3章 类中方法.ppt
- 第4章___Linux的常用命令.ppt
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
最近下载
- 6.2交友的智慧 课件-2024-2025学年道德与法治七年级上册(统编版2024).pptx VIP
- (完整版)高中生物知识点总结(完整版).pdf
- 浙江省上虞实验中学2020-2021学年八年级上学期第一次月考数学试题(含解析).doc
- 环保涂料建设项目环境影响报告书.pdf
- 重难点专题02 函数值域与最值十四大题型汇总(解析版).docx VIP
- 6.1友谊的真谛 课件 2024-2025学年七年级道德与法治上册 统编版2024.pptx VIP
- 《公司治理学》(李维安第四版)教学全套课件.pptx
- 迷雾水珠 高清钢琴谱五线谱.pdf
- 湖南省长沙市长郡2024-2025学年高三上学期月考试卷(一)+英语试卷(含解析,含听力原文无音频).pdf VIP
- 6.1 友谊的真谛 【课件】2024-2025学年七年级上册道德与法治 统编版2024).pptx VIP
文档评论(0)