C++程序设计教程 第3版资源-孟威 刘慧宁06.ppt

C++程序设计教程 第3版资源-孟威 刘慧宁06.ppt

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计教程第3版资源-孟威刘慧宁06

第6章 继 承 6.1 继承与派生 6.2 单继承 6.3 多继承 6.4 派生类的构造函数与析构函数 6.5 二义性问题 6.6 虚基类 6.7 赋值兼容原则 6.1 继 承 6.1 继承(续) 继承是面向对象程序设计支持代码重用的重要机制。通过继承,可以在原有类的基础上派生出新类,新类将共享原有类的属性,并且还可以添加新的特性。 继承是从一个类派生出一个新类的过程。 派生出来的新类称为派生类或子类;而被继承的类称作基类或父类。 6.1 继承(续) 单继承是指从一个基类派生出一个派生类的过程,而多继承是指从一个以上的基类派生出一个派生类的过程。 6.2 单继承 通过单继承派生一个类的一般形式如下: class 派生类名:派生类型 基类名 { 定义派生类新成员 }; 6.2 单继承(续) 使用关键字struct定义派生类时,默认为公有派生。 关键字public表示公有派生,private表示私有派生,protected表示保护派生。 定义一个派生类时,采用不同的派生类型,从基类继承而来的成员的访问权限在派生类中也有所不同。 6.2.1 公有派生 当采用公有派生时,基类中的公有(public)成员和保护(protected)成员的访问权限在派生类中保持不变,而基类的私有(private)成员无论是在派生类中,还是在类外都是不可访问的。即基类的公有成员和保护成员被派生类继承过来,作为派生类的公有成员和保护成员;但基类的私有成员在派生类中不能直接使用。 例6-1 公有派生 6.2.2 私有派生 当采用私有派生时,基类的私有成员与公有派生时相同,无论是在派生类中,还是在类外都是不可访问的;但基类中的公有成员和保护成员的访问权限在派生类中则变为私有。即基类的公有成员和保护成员被派生类继承过来,作为派生类的私有成员;而基类的私有成员在派生类中不能直接使用。 例6-2 私有派生 6.2.3 保护派生 当采用保护派生时,基类的私有成员与公有派生时相同,无论是在派生类中,还是在类外都是不可访问的;基类中的公有成员和保护成员的访问权限在派生类中则变为保护。即基类的公有成员和保护成员被派生类继承过来,作为派生类的保护成员;而基类的私有成员在派生类中不能直接使用。 例6-3  保护派生 6.2.3 保护派生(续) 引入保护成员的意义就在于使类中的这些成员对该类及它的派生类是可见的,但在程序的其他部分与私有成员一样,是不可见的。 在程序的任何部分如果定义有一个类的对象,就可以通过这个对象访问对象所属类中的所有公有成员,但除非在该类中,否则不能通过该对象访问其私有和保护成员。 6.2.3 保护派生(续) 一个派生类的成员函数可以直接访问所属类中新定义的所有成员,以及派生它的基类中的公有和保护成员(派生类中不能通过基类对象访问基类保护成员,但可以通过派生类对象访问)。 一个类的私有成员只能被所属类的成员函数访问,在其他任何地方都不可见。 6.2.3 保护派生(续) 6.3 多继承 定义形式如下: class 派生类名:派生类型1 基类名1,派生类型2 基类名2,…,派生类型n 基类名n { 定义派生类新成员 }; 每一个派生类型对应的是紧接其后给出的基类,而且必须给每个基类指定一种派生类型,如果缺省,相应的基类则取私有派生类型,而不是和前一个基类取相同的派生类型。 6.3 多继承(续) class A { … }; class B { … }; class C:public A,B { … }; 6.3 多继承(续) 多继承可以看作是多个单继承的组合,单继承可以看作是多继承的特例。 例6-4 多继承 6.4 派生类的构造函数与析构函数 派生时,构造函数和析构函数不能被继承。 派生类中包含有从基类继承来的和派生类中新定义的数据成员,而派生类和它的基类都有相应的构造函数和析构函数。 例6-5 调用构造函数和析构函数 6.4 派生类的构造函数与析构函数(续) 创建派生类的对象时,系统将首先调用其基类的构造函数来初始化从基类中继承的数据成员,然后调用派生类自身的构造函数初始化在派生类中新定义的数据成员。 终止对象时,析构函数的执行顺序则正好相反,先调用派生类的析构函数清除派生类中新定义的数据成员,再调用基类的析构函数清除从基类中继承的数据成员。 6.4 派生类的构造函数与析构函数(续) 派生类名::派生类名(参数总表):基类1(参数表1),基类2(参数表2),…,基类n(参数表n),对象成员1(对象成员参数表1),对象成员2(对象成员参数表2),…,对象成员n(对象成员参数表n) {

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档