人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十八章 虚函数

人民邮电出版3 第十八章虚画数
人民邮电出版社 第十八章 虚函数

人民邮电出版3 18.1虚函数 18,2纯虚函数和抽象基类 18.3编译连接与执行连接
人民邮电出版社 18.1 虚函数 18.2 纯虚函数和抽象基类 18.3 编译连接与执行连接

人民邮电出版3 18.1虚函数 18.11虚函数的概念 虚函数是一种在基类中定义为 virtual的函数, 并在一个或多个派生类中再定义的函数。虚函数的 特点是,当使用指向派生类对象基类指针对函数进 行访问时,C++就根据运行时指针所指向的对象去 确定调用哪一个函数。这样,当指针指向不同的对 象时,就执行了虚函数不同的版本。 实现使用虚函数运行时多态性的关键在于:必 须通过基类指针访问这些函数
人民邮电出版社 18.1 虚函数 18.1.1 虚函数的概念 虚函数是一种在基类中定义为virtual的函数, 并在一个或多个派生类中再定义的函数。虚函数的 特点是,当使用指向派生类对象基类指针对函数进 行访问时,C++就根据运行时指针所指向的对象去 确定调用哪一个函数。这样,当指针指向不同的对 象时,就执行了虚函数不同的版本。 实现使用虚函数运行时多态性的关键在于:必 须通过基类指针访问这些函数

人民邮电出版3 在派生类中再定义虚函数是一种特殊的函数重 载。它不同于通常所说的函数重载。这是因为: 第一,虚函数的原型必须匹配。在一般的函数重 载中,函数的返回类型和参数的数目都可以不同;但 重载虚函数时,这些都必须是固定不变的。 第二,虚函数必须是定义成类的成员函数,不能 定义为友元函数,但可以是其它类的友元。 第三,析构函数可以是虚函数,但构造函数不能 是虚函数
人民邮电出版社 在派生类中再定义虚函数是一种特殊的函数重 载。它不同于通常所说的函数重载。这是因为: 第一,虚函数的原型必须匹配。在一般的函数重 载中,函数的返回类型和参数的数目都可以不同;但 重载虚函数时,这些都必须是固定不变的。 第二,虚函数必须是定义成类的成员函数,不能 定义为友元函数,但可以是其它类的友元。 第三,析构函数可以是虚函数,但构造函数不能 是虚函数

人民邮电出版3 18.2为什么要使用虚函数 正是虚函数与派生类的结合,使C+实现了运 行时的多态性。而多态性是面向对象程序设计的重 要特性。因为这个特性,使得能在基类中说明本类 的派生类都共有的函数,并使派生类对它们的特定 功能再进行定义 基类提供了派生类能直接使用的所有元素和派 生类自己实现的函数。由于接口的形式已由基类定 g八义,所以任何派生类都享有同一接口。这种基类定 义派生类的通用接口,派生类各自定义自己的具体 方法,就是常用的“同一接口,多种方法
人民邮电出版社 18.1.2 为什么要使用虚函数 正是虚函数与派生类的结合,使C++实现了运 行时的多态性。而多态性是面向对象程序设计的重 要特性。因为这个特性,使得能在基类中说明本类 的派生类都共有的函数,并使派生类对它们的特定 功能再进行定义。 基类提供了派生类能直接使用的所有元素和派 生类自己实现的函数。由于接口的形式已由基类定 义,所以任何派生类都享有同一接口。这种基类定 义派生类的通用接口,派生类各自定义自己的具体 方法,就是常用的“同一接口,多种方法”

人民邮电出版3 182纯虚函数和抽象基类 18.,2.1纯虚函数 纯虚函数是定义在基类中的一种函数,在基类 定义中只给出函数的原型,它没有任何与该基类有 关的定义。这样的函数就叫做纯虚函数。纯虚函数 的存在,使得任意派生类都必须定义自己的函数版 本。否则,在编译时给出错误信息 纯虚函数定义的一般形式为: virtual type func name(paraneter list)=0 其中,type是纯虚函数的返回类型; func name是所定义的纯虚函数的函数名; paraneter list是纯虚函数的参数
人民邮电出版社 18.2 纯虚函数和抽象基类 18.2.1 纯虚函数 纯虚函数是定义在基类中的一种函数,在基类 定义中只给出函数的原型,它没有任何与该基类有 关的定义。这样的函数就叫做纯虚函数。纯虚函数 的存在,使得任意派生类都必须定义自己的函数版 本。否则,在编译时给出错误信息。 纯虚函数定义的一般形式为: virtual type func_name(paraneter_list)=0; 其中,type是纯虚函数的返回类型; func_name是所定义的纯虚函数的函数名; paraneter_list是纯虚函数的参数

人民邮电出版3 18.,22抽象基类 我们已经知道,含有纯虚函数的基类称为抽象 基类。 抽象基类有一个重要特性:即抽象类不能建立 对象。抽象基类只能用作其它类继承的基类。 例如,对于抽象基类 number,下面建立对象n 的语句是错误的 number n 抽象类可以有指向自己的指针,以支持运行时 婴八的多态性,例如,下面的语句是合法的 number *pn;
人民邮电出版社 18.2.2 抽象基类 我们已经知道,含有纯虚函数的基类称为抽象 基类。 抽象基类有一个重要特性:即抽象类不能建立 对象。抽象基类只能用作其它类继承的基类。 例如,对于抽象基类number,下面建立对象n 的语句是错误的: number n; 抽象类可以有指向自己的指针,以支持运行时 的多态性,例如,下面的语句是合法的: number *pn;

人民邮电出版3 18.3编译连接与执行连接 在面向对象程序设计语言的讨论中,常用到 两个术语:先连接( early binding)和后连接 ( late binding)。先连接指编译时进行连接,后 连接指运行程序时才进行连接,也称执行连接
人民邮电出版社 18.3 编译连接与执行连接 在面向对象程序设计语言的讨论中,常用到 两个术语:先连接(early binding)和后连接 (late binding)。先连接指编译时进行连接,后 连接指运行程序时才进行连接,也称执行连接
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第四章 程序控制语句——循环结构.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十章 用户定义数据类型.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十四章 C++ 概述.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十六章 类的工具.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十八章 虚函数.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十五章 类.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十二章 屏幕控制.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十九章 C++的I/O系统.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十三章 磁盘文件操作(I/O系统).ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十七章 类的继承.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十一章 C语言的预处理器.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第六章 数组与字符串.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第八章 函数.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第五章 位操作及其它操作.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第二章 数据、操作符和表达式.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第九章 数据的存储方式.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第三章 程序控制语句—分支结构.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第七章 指针.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第一章 对C语言的初步认识.ppt
- 吉林大学法学院:《破产法》课程教学课件(PPT讲稿,共十二章,主讲:齐明).ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十二章 屏幕控制.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十九章 C++的I/O系统.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十六章 类的工具.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十七章 类的继承.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十三章 磁盘文件操作(I/O系统).ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十四章 C++ 概述.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十五章 类.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十一章 C语言的预处理器.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第十章 用户定义数据类型.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第四章 程序控制语句——循环结构.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第五章 位操作及其它操作.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第一章 对C语言的初步认识.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第八章 函数.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第二章 数据、操作符和表达式.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第九章 数据的存储方式.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第六章 数组与字符串.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第七章 指针.ppt
- 人民邮电出版社:《C及C++程序设计》课程教学资源(PPT课件讲稿)第三章 程序控制语句—分支结构.ppt
- 《医学统计》第一章 SPSS概览(张文彤).doc
- 《医学统计》第七章 均数间的比较(张文彤).doc