WEO啦

首页 » 正文内容 » 第4章 继承与派生
第4章 继承与派生
收录时间:2022-11-25 21:38:22  浏览:0
C 面向对象程序设计 第4章继承和派生 2 目标 理解派生和继承的相关概念 掌握派生类的声明方式掌握派生类的构成和成员的访问属性 掌握派生类构造函数和析构函数的使用方法 掌握多重继承的方法 理解虚基类的作用和声明方式 3 本章内容 4 1基类和派生类4 2单继承4 3多继承4 4虚基类4 5综合案例分析 4 4 3多继承 多继承 一个派生类同时继承多个基类 5 4 3多继承 4 3 1声明多继承的方法4 3 2多继承下的构造函数4 3 3多继承引起的二义性问题 6 4 3 1声明多继承的方法 声明格式class派生类名 继承方式 基类名1 继承方式 基类名2 继承方式 基类名n 派生类成员声明 例 7 classA public displayA cout a private inta classB public displayB cout b private intb classC publicA publicB public displayC cout c private intc 例 8 4 3 1声明多继承的方法 9 4 3多继承 4 3 1声明多继承的方法4 3 2多继承下的构造函数4 3 3多继承引起的二义性问题 10 4 3 2多继承下的构造函数 多继承下的构造函数和析构函数与单继承下的构造函数和析构函数相似 派生类的构造函数需要对基类成员 内嵌子对象和新增成员进行初始化 例 11 C inta1 inta2 intb1 intb2 intcc A a1 x a2 B b1 y b2 c cc 12 4 3 2多继承下的构造函数 派生类的构造函数需要对基类成员 内嵌子对象和新增成员进行初始化 基类构造函数的调用顺序按声明派生类时基类出现的顺序 与构造函数中出现顺序无关 子对象也一样 与定义顺序有关 例1 13 classB1 public B1 inti cout B1 i endl classB2 public B2 intj cout B2 j endl classB3 public B3 cout B3 endl classC publicB2 publicB1 publicB3 public C inta intb intc intd B1 a memB2 d memB1 c B2 b private B1memB1 B2memB2 B3memB3 voidmain Cobj 1 2 3 4 例 14 4 3 2多继承下的构造函数 派生类的构造函数需要对基类成员 内嵌子对象和新增成员进行初始化 基类构造函数的调用顺序按声明派生类时基类出现的顺序 与构造函数中出现顺序无关 子对象也一样 与定义顺序有关 例2 P272例10 10 15 4 3多继承 4 3 1声明多继承的方法4 3 2多继承下的构造函数4 3 3多继承引起的二义性问题 16 4 3 3多继承引起的二义性问题 多重继承引起的二义性问题1 两个基类有同名成员 2 两个基类和派生类三者都有同名成员 3 两个派生类从同一个基类派生 17 4 3 3多继承引起的二义性问题 多重继承引起的二义性问题1 两个基类有同名成员2 两个基类和派生类三者都有同名成员3 两个派生类从同一个基类派生 18 4 3 3多继承引起的二义性问题 1 两个基类有同名成员 Cc c display 19 4 3 3多继承引起的二义性问题 多重继承引起的二义性问题1 两个基类有同名成员解决方法 引用时指定同名成员所属类 2 两个基类和派生类三者都有同名成员3 两个派生类从同一个基类派生 20 4 3 3多继承引起的二义性问题 多重继承引起的二义性问题1 两个基类有同名成员2 两个基类和派生类三者都有同名成员3 两个派生类从同一个基类派生 21 classA public voiddisplay cout A endl classB public voiddisplay cout B endl classC publicA publicB public voiddisplay cout C endl voidmain Cc c display 4 3 3多继承引起的二义性问题 22 4 3 3多继承引起的二义性问题 多重继承引起的二义性问题1 两个基类有同名成员2 两个基类和派生类三者都有同名成员派生类同名成员将覆盖基类中的同名成员 不同的成员函数只有在完全相同的情况下才发生同名覆盖 如果函数名相同而参数不同 属于函数重载 3 两个派生类从同一个基类派生 23 4 3 3多继承引起的二义性问题 多重继承引起的二义性问题1 两个基类有同名成员2 两个基类和派生类三者都有同名成员派生类同名成员将覆盖基类中的同名成员 不同的成员函数只有在完全相同的情况下才发生同名覆盖 如果函数名相同而参数不同 属于函数重载 3 两个派生类从同一个基类派生 Cc c display 访问C类的display c A display 访问A类的display c B display 访问B类的display 24 4 3 3多继承引起的二义性问题 多重继承引起的二义性问题1 两个基类有同名成员2 两个基类和派生类三者都有同名成员解决方法 基类同名成员被派生类的同名成员覆盖 如果想访问基类同名成员 加类名 3 两个派生类从同一个基类派生 25 4 3 3多继承引起的二义性问题 多重继承引起的二义性问题1 两个基类有同名成员2 两个基类和派生类三者都有同名成员3 两个派生类从同一个基类派生 26 classA public voiddisplay cout a endl classB publicA classC publicA classD publicB publicC public voiddisplay cout a endl voidmain Dd d display D类的display c B display B类从A类继承的display c C display C类从A类继承的display 例 27 4 3 3多继承引起的二义性问题 多重继承引起的二义性问题1 两个基类有同名成员2 两个基类和派生类三者都有同名成员3 两个派生类从同一个基类派生在派生类中引用时指明是从哪个直接基类继承的 加直接基类名 会保存共同基类的多份同名成员 28 4 3 3多继承引起的二义性问题 E中能否只保留一份A的a和display 29 4 3 3多继承引起的二义性问题 多重继承引起的二义性问题1 两个基类有同名成员2 两个基类和派生类三者都有同名成员3 两个派生类从同一个基类派生例 P278例10 13 30 本章内容 4 1基类和派生类4 2单继承4 3多继承4 4虚基类4 5综
温馨提示:
1. WEO啦仅展示《第4章 继承与派生》的部分公开内容,版权归原著者或相关公司所有。
2. 文档内容来源于互联网免费公开的渠道,若文档所含内容侵犯了您的版权或隐私,请通知我们立即删除。
3. 当前页面地址:https://www.weo.la/doc/70e5f80a00714643.html 复制内容请保留相关链接。