《vc++课件》多继承和虚基类

多继水和虚基类
多继承和虚基类

主要内容 多继承的定义 ■多继承中构造函数的定义及其调用 虚基类的概念 虚基类的定义
◼ 多继承的定义 ◼ 多继承中构造函数的定义及其调用 ◼ 虚基类的概念 ◼ 虚基类的定义 主要内容

人 多继系 黄种人 单继承 中国人韩国人越南人日本人 派生类只有一个基类! 人 多继承继承 学生 教师 派生类“助教”有多个基类! 助教
多继承 人 黄种人 中国人 韩国人 越南人 日本人 •单继承 派生类只有一个基类! •多继承继承 人 学生 教师 助教 派生类“助教”有多个基类!

多继承的定义 ●定义格式 class,…, <派生类新定义成员 例:根据图示完成类A、B、C的定义 A B C abc a b C
多继承的定义 class : ,…, { }; •定义格式 例: 根据图示完成类A、B、C的定义 a b c A B C c b a C

多继承的构造巫数 ()(),…,() 多继承方式下构造函数的调用顺序: 1)按照基类在派生类定义中出现的顺序调用所有基类 的构造函数 2)若存在对象,调用对象的构造函数 3)调用派生类自身的构造函数;
多继承的构造函数 ():(),…, () { }; 多继承方式下构造函数的调用顺序: 1) 按照基类在派生类定义中出现的顺序调用所有基类 的构造函数; 2) 若存在对象,调用对象的构造函数; 3) 调用派生类自身的构造函数;

A 例1:写出C的构造函数,并说 a Bb 明构造函数的调用顺序 C class C: public B, public A C int c C(inti,intj,intk):A(),B(j)∥还可以写为 调用顺序:B--A--C∥/与初始化成员列表无关!! 例2:示例多继承方式下构造函数和析构函数的调用顺序
例1: 写出C的构造函数,并说 明构造函数的调用顺序。 a b c A B C 例2: 示例多继承方式下构造函数和析构函数的调用顺序。 C(int i, int j, int k):A(i),B(j) //还可以写为…… { } c = k; class C: public B, public A { }; int c; 调用顺序:B----A-----C //与初始化成员列表无关!!

虚基类 name 人 insert name id 继承的二义性 insert id salar name prnt学生 教师 insert_salary insert_name print name dn 研究生 insert name insert dn d insert id 助教 print print 思考助教类中有哪些类成员? 出现这种问题的原因是什么? insert name
虚基类 人 学生 教师 助教 研究生 name insert_name id insert_id print dn insert_dn salary insert_salary print print 思考助教类中有哪些类成员? name insert_name name insert_name id insert_id print …… insert_name 继承的二义性 出现这种问题的原因是什么?

虚基类「人 应基类 学生 教师 ■解决继承二义性问题: 研究生 部分或全部直接基类具有相同的父类 助教 ■定义格式 dasstua ■例3示例虚基类的应用
虚基类 ◼解决继承二义性问题: 部分或全部直接基类具有相同的父类 人 学生 教师 助教 研究生 虚基类 ◼定义格式 class :virtual ◼例3 示例虚基类的应用

引入虛基类后构造函数的调用顺序: ●同一层次中,先调用虚基类的构造函数; ●同一层次中,若存在多个虚基类,则按照派生类中的 定义顺序调用其构造函数; 不同层次中,还是先调用基类构造函数再调用派生类 构造函数; 例4示例虚基类引入后构造函数调用顺序 Base2 Base2 Base1虚 even Leve2虚 TopLevel
引入虚基类后构造函数的调用顺序: •同一层次中,先调用虚基类的构造函数; •不同层次中,还是先调用基类构造函数再调用派生类 构造函数; •同一层次中,若存在多个虚基类,则按照派生类中的 定义顺序调用其构造函数; 例4 示例虚基类引入后构造函数调用顺序 Base2 Base2 Base1 Level1 Level2 TopLevel 虚 虚
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《vc++课件》继承.ppt
- 《vc++课件》虚函数和抽象类.ppt
- 《vc++课件》类的构造和析构.ppt
- 《vc++课件》静态成员和友元.ppt
- 《C++程序设计实验指导书》(第四版)电子课件.doc
- 《MATLAB》课程教学讲稿(PPT电子课件)第四讲 matlab 绘图.ppt
- 《MATLAB》课程教学讲稿(PPT电子课件)第六讲 matlab工具箱.ppt
- 《MATLAB》课程教学讲稿(PPT电子课件)第五讲 matlab句柄绘图.ppt
- 《MATLAB》课程教学讲稿(PPT电子课件)第二讲 MATLAB的数值计算.ppt
- 《MATLAB》课程教学讲稿(PPT电子课件)第三讲 MATLAB的符号运算.ppt
- 《MATLAB》课程教学讲稿(PPT电子课件)第七讲 matlab的程序设计.ppt
- 《MATLAB》课程教学讲稿(PPT电子课件)第一讲 MATLAB语言概述.ppt
- 《MATLAB》课程教学讲稿(PPT电子课件)第9章 MATLAB符号计算.ppt
- 《MATLAB》课程教学讲稿(PPT电子课件)第8章 MATLAB数值积分与微分.ppt
- 《MATLAB》课程教学讲稿(PPT电子课件)第7章 MATLAB解方程与函数极值.ppt
- 《MATLAB》课程教学讲稿(PPT电子课件)第6章 MATLAB数据分析与多项式计算.ppt
- 《MATLAB》课程教学讲稿(PPT电子课件)第5章 MATLAB绘图.ppt
- 《MATLAB》课程教学讲稿(PPT电子课件)第4章 MATLAB文件操作.ppt
- 《MATLAB》课程教学讲稿(PPT电子课件)第3章 MATLAB程序设计.ppt
- 《MATLAB》课程教学讲稿(PPT电子课件)第1章 MATLAB操作基础.ppt
- 《vc++课件》多态.ppt
- 《vc++课件》模板和IO流.ppt
- 《vc++课件》Windows编程基础.ppt
- 《vc++课件》单文档应用程序设计.ppt
- 《vc++课件》对话式应用程序设计.ppt
- 《vc++课件》c++基础1.ppt
- 《vc++课件》c++基础2.ppt
- 《vc++课件》类的设计和对象的使用.ppt
- 成都理工大学工程技术学院:《C程序设计教程》第一章 C程序概述.ppt
- 成都理工大学工程技术学院:《C程序设计教程》第二章 C程序设计基础.ppt
- 成都理工大学工程技术学院:《C程序设计教程》第三章 程序的控制结构.ppt
- 成都理工大学工程技术学院:《C程序设计教程》第四章 数组.ppt
- 成都理工大学工程技术学院:《C程序设计教程》第五章 指针.ppt
- 成都理工大学工程技术学院:《C程序设计教程》第六章 函数.ppt
- 成都理工大学工程技术学院:《C程序设计教程》第七章 结构体与共用体.ppt
- 成都理工大学工程技术学院:《C程序设计教程》第八章 文件访问.ppt
- 成都理工大学工程技术学院:《C程序设计教程》第九章 变量的作用域与生存期.ppt
- 天津大学:《数据结构 Data Structures》课程PPT教学课件(英文版)Chapter 10 The Disjoint Set ADT.ppt
- 天津大学:《数据结构 Data Structures》课程PPT教学课件(英文版)Chapter 2 Algorithm Analysis.ppt
- 天津大学:《数据结构 Data Structures》课程PPT教学课件(英文版)Chapter 3 Lists.ppt