- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
cppCH4继承和派生类.ppt
cppCH4继承和派生类 自考 4.1 继承和派生的基本概念1 继承的实质就是建造新的派生类。 派生类从一个或多个以前定义的基类继承数据和函数,同时增加或重新定义数据或操作。 特殊化已有类来建立新类的过程,叫做“类的派生”,原有的类称为基类,新建立的类则叫做派生类。 另一方面,派生类自动地将基类的所有成员作为自己的成员,这叫做继承。 基类和派生类又可以分别叫做“父类”和“子类”。 性质约束、性质扩展(领会) 4.1 继承和派生的基本概念1 继承常用来表示类属关系。不能将继承理解为构成关系。 当从现存类中派生出新类时,可以对派生类作如下几种变化(p63) C++中有两种继承:单一继承和多继承。 历年试题: (200710)如果一个派生类只有一个唯一的基类,则这样的继承关系称为单一继承。 (200210)通过C++语言中的继承(或派生) 机制,可以从现存类中构建其子类。 4.2 单一继承 C++中单一继承的一般形式: 访问控制用于规定基类成员在派生类中的访问权限。 访问控制是private 、protected、 public中的一个。 举例理解(p64) 4.3 类的保护成员 类的私有成员只能被它的成员函数和友元访问。 C++语言规定:派生类的成员函数可以访问基类中定义的(或基类从另一个基类继承来的)公有成员和保护成员,不能访问基类中的私有成员。 举例理解:保护成员的双重角色(p66) 4.4 访问控制权限和赋值兼容规则 基类成员在派生类中的访问权限: (1)不可访问(2)公有成员(3)私有成员(4)保护成员 1、公有继承和赋值兼容规则 (1)公有派生的情况下,基类成员被吸收到派生类中后,在派生类中的的访问控制权限(p67) 不可访问成员总是由基类继承来的,要么是基类的不可访问成员,要么是基类的私有成员。 (2)赋值兼容规则: (p67-68) 派生类的对象可以赋值给基类对象。 派生类的对象可以初始化基类的引用。 派生类对象的地址可以赋给指向基类的指针。 赋值兼容规则的前提:公有继承。 赋值兼容规则是指在公有继承情况下,一个派生类的对象可以作为基类的对象来使用的地方。 2、私有派生 举例理解(p68) 类中访问 类外访问 3、保护成员 举例理解(p69、p70) 类中访问 类外访问 4.5 多重继承 一个派生类有多个基类,这种继承方式称为多重继承。多继承的一般形式: 举例理解(p71,main函数P72) 4.6 构造函数与析构函数调用的顺序1 派生类吸收了基类的成员,问派生类的对象如何初始化? 答:在派生类中继承的基类成员的初始化,需要由派生类的构造函数向基类的构造函数传递参数来完成。(教材p72”调用”一词描述有误) 派生类中的构造函数的设计: 冒号后面的列表称为成员初始化列表。 举例理解(p73) 4.6构造函数与析构函数调用的顺序2 派生类构造函数调用顺序: 当说明派生类的对象时,首先调用基类的构造函数,对基类的成员进行的初始化,然后执行派生类的构造函数,如果某个基类仍是一个派生类,则这个过程递归进行。 当派生类的对象生存期结束消失时,析构函数的执行顺序和执行构造函数时的顺序正好相反。 举例理解:分析p73 d对象的执行顺序。 如果派生类还包含对象成员,规则见下一页 4.6构造函数与析构函数调用的顺序3 如果派生类还包含对象成员,则派生类创建对象的过程为: 1. 调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右)。 2. 调用对象成员的构造函数,调用顺序按照它们在类中声明的顺序。 3. 派生类的构造函数体中的内容。 举例理解(p73-74) 多重继承:举例理解(p74-75) 4.7 两义性及其支配规则 访问原则:只能访问能够唯一标识的可见的成员。 4.7.1两义性和作用域分辨操作符 两义性的产生: 两义性的解决: (1)成员名限定p77 (2)同名隐藏(支配规则)p77 (3)虚继承p80 ::作用域分辨操作符 4.7.2 两义性及其支配规则 支配规则概念:类X(子类)继承类Y(父类),类X中的名字N支配类Y中同名的名字N,这称为支配规则。 直接基类名限定(p78) 一个类不能从同一个类中直接继承一次以上。(了解) 访问权限不能解决两义性。(了解) 几层继承尔一行的解决。(了解) 4.8虚基类 如果想使这个公共基类只产生一个实例,则可以将这个公共基类说明为虚基类。 举例理解(p81) (200710)若要保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以virtual的方式直接继承它。 习题4 多重继承时创建派生类对象 调用构造函数的顺序 多重继承时创建派生类对象及派生类对象生存期结束时 调用构造函数和析构函数的顺序 Ch
文档评论(0)