版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7章 继承、重载和多态性,继承 重载 多态性,继承,基类和派生类 继承的访问控制 派生类的构造函数和析构函数 多重派生,基类和派生类,继承就是从一个类中继承它的特性到另一个类中。 被继承的类叫做基类, 继承基类的类称为派生类。 派生类可以继承基类的特性并添加自己的独特特性。,定义派生类,class derivedclass:public bassclass 在后面的花括号中写出derivedclass中所有非继承的特性。 public关键字所处的位置用于写访问修饰符,允许省略不写。 访问形饰符只能是public, private或者protected之一 默认为private。,类的继承,类
2、继承自两个以上的基类,继承的访问控制,基类各个成员的访问修饰符(private, public和protected)以及派生类以什么方式继承基类(也是private, public和protected)决定了基类的成员是否允许派生类的访问。 如果派生类以public的方式继承基类,那么,基类的所有公有数据成员都会成为派生类的公有数据成员,而基类的私有数据成员仍然保持它的私有特性,也就是说只能被基类定义的成员函数所访问,而不能被派生类的任何成员函数所访问。同样,基类的所有私有成员函数派生类也不能够访问。 如果以private的方式继承一个类,那么基类的所有数据成员都会变成派生类的私有成员,不论这
3、个成员在基类中是私有的还是公有的。这时派生类的成员仍然可以访问它们,但是程序其他部分的代码不能够访问它们。,用公有方式继承基类的私有数据成员的方法计算一个矩形的面积,用私有方式继承基类的私有数据成员的方法计算一个矩形的面积,关于protected,被声明为protected的成员在类的内部是公有的,但是在类的外部则是私有的。 派生类中可以直接访问基类的受保护的成员,但是在类的外部则不可以直接访问它们,因为在类的外部认为它们是私有的成员。 如果派生类以public的方式继承基类,那么基类的protected成员在派生类中仍然是protected类型 如果派生类以private的方式继承基类,那么
4、基类的protected成员在派生类中就变成private类型。,使用protected成员,派生类的构造函数和析构函数,由于在派生类中允许存在基类中没有的成员数据,因此,在C+中,使用基类的构造函数为基类的数据成员初始化,而使用派生类的构造函数为派生类中新定义的数据成员初始化。 如果基类没有显式定义一个构造函数用于对成员数据进行初始化的话,那么就用派生类的构造函数对它们进行初始化。,计算一个立方体的体积,调用基类的构造函数,派生类和基类构造函数与析构函数的执行次序,多重派生,在类的继承过程中,使用一个以上的基类派生出一个派生类。 方法是在定义好基类之后,在定义派生类时把基类用逗号隔开,多重派
5、生,重载,函数重载 运算符重载,函数重载,函数重载是指同一个函数名可以对应多个函数的实现,每一种实现对应着一个函数,这些函数具有相同的名字,但是参数的类型不一样,或者参数的个数不相同。这就是函数重载。 在调用一个函数时如何确定使用哪个函数实现呢? 编译器会根据函数调用时参数的个数和参数的数据类型来确定使用哪个函数来实现。因此在编写重载函数的时候要求各个函数的参数个数不同,或者参数的数据类型不同,这样才能相互区分开来,否则将不能实现重载。,参数类型不同的函数重载,参数个数不同的函数重载,运算符重载,C+允许通过类来重载运算符让运算符实现新的功能。 普通的运算符只能够对普通数据类型的数据进行运算,
6、而使用运算符重载则可以实现类之间的运算,从而将新的数据类型无缝地集成到程序设计环境中来。,使用成员运算符函数实现重载,使用运算符重载,可以为一个普通的运算符赋予一个新的含义 为了能够重载运算符,就需要在类中定义一个operator函数,称为成员运算符函数,方法是: 类名 : operator 运算符(参数表),使用运算符重载实现二维空间坐标的加和与赋值,操作数的顺序,在重载运算符时,必须注意操作数的顺序。 a+b和b+a的值是一样的,但是如果重载“”运算符,那么ab和ba的结果就应该不同。,在dtwo类中重载+运算符,使用友元函数实现重载,由于友元函数并不是类真正的成员函数,所以不可以使用th
7、is指针来传递参数,因此要使用友元函数实现一元运算符的重载就需要让友元成员运算符函数带一个参数,而如果重载二元运算符就需要让它的友元成员运算符函数带两个参数,使用友元函数重载运算符*,多态性,指向基类的指针和指向派生类的指针 虚函数 纯虚函数和抽象类,多态性,C+实现多态性的基础是继承和指向基类的指针,而实际上多态性是通过虚函数实现的。,指向基类的指针和指向派生类的指针,如果定义一个指针p指向一个类a,这个类又派生出新的类b,那么p就是指向基类的指针,并且这个指针还可以指向类b的对象。 当指向基类的指针指向派生类对象的时候,通过这个指针只能访问到派生类对象中从基类继承来的那些成员,不能访问派生类中新增加的成员。,使用指向基类的指针访问派生类对象,虚函数,虚函数是指在一个类中被声明为virtual的成员函数,这个函数允许在这个基类的一个或多个派生类中重新定义。 在所有的这些类中,虚函数都有相同的名字,并且有完全相同的参数数量和类型,但是具有不同的实现方式。 如果定义了一个指向基类的指针p,就可以使用p调用不同派生类的虚函数,由于所有虚函数的名字相同,参数的个数和类型也都一样,因此实现了面向对象程序设计所提倡的“一个接口多种方法”的多态性。,实现虚函数,使用虚函数实现多态性,纯虚函数和抽象类,纯虚函数只有函数的声
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年数字重庆大数据应用发展有限公司市场化招聘专业人才18人笔试历年参考题库附带答案详解
- 中考二轮复习:古诗词大单元整合爱情诗:读懂人间深情吃透情感类古诗考点
- 2026北京中医药大学东方医院招聘社会人员1名(第七批)模拟试卷及答案详解(全优)
- 2026吉林大学白求恩第一医院神经创伤外科招聘启事笔试题库及参考答案详解【A卷】
- 2026广东云浮市人民医院招聘职工食堂厨师1人模拟试卷含答案详解AB卷
- 基础医学考研试题及答案
- 陕西省西安市新城区2025-2026学年三下数学期末联考试题含解析
- 陕西省渭南市澄城县2025届四年级数学第一学期阶段统考试题(含解析)
- 2025年度中国铁路投资集团有限公司应届高校毕业生招聘23人笔试历年参考题库附带答案详解
- 2025年广西百色市西林县公立医院集团招聘笔试历年参考题库附带答案详解
- 下载安全考试题库及答案
- 化疗后口腔溃疡预防与护理
- 合同里面的排他协议
- 2024年宜宾三江新区招聘社区专职工作者考试真题
- 建筑电气安装施工方案与建筑电气施工方案汇编
- 2025年度智能穿戴设备外观设计合同模板4篇
- 中建房建通风与空调施工方案
- 医疗器械经营质量管理制度和工作程序目录
- GB/T 44353.2-2024动物源医疗器械第2部分:来源、收集与处置的控制
- 船员培训总结
- GB/T 15622-2023液压缸试验方法
评论
0/150
提交评论