C及C++程序设计 教学课件 作者 张富 第十八章.ppt

C及C++程序设计 教学课件 作者 张富 第十八章.ppt

ID:50320009

大小:81.50 KB

页数:8页

时间:2020-03-08

C及C++程序设计 教学课件 作者 张富 第十八章.ppt_第1页
C及C++程序设计 教学课件 作者 张富 第十八章.ppt_第2页
C及C++程序设计 教学课件 作者 张富 第十八章.ppt_第3页
C及C++程序设计 教学课件 作者 张富 第十八章.ppt_第4页
C及C++程序设计 教学课件 作者 张富 第十八章.ppt_第5页
资源描述:

《C及C++程序设计 教学课件 作者 张富 第十八章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十八章虚函数18.1虚函数18.2纯虚函数和抽象基类18.3编译连接与执行连接18.1虚函数18.1.1虚函数的概念虚函数是一种在基类中定义为virtual的函数,并在一个或多个派生类中再定义的函数。虚函数的特点是,当使用指向派生类对象基类指针对函数进行访问时,C++就根据运行时指针所指向的对象去确定调用哪一个函数。这样,当指针指向不同的对象时,就执行了虚函数不同的版本。实现使用虚函数运行时多态性的关键在于:必须通过基类指针访问这些函数。在派生类中再定义虚函数是一种特殊的函数重载。它不同于通常所说

2、的函数重载。这是因为:第一,虚函数的原型必须匹配。在一般的函数重载中,函数的返回类型和参数的数目都可以不同;但重载虚函数时,这些都必须是固定不变的。第二,虚函数必须是定义成类的成员函数,不能定义为友元函数,但可以是其它类的友元。第三,析构函数可以是虚函数,但构造函数不能是虚函数。18.1.2为什么要使用虚函数正是虚函数与派生类的结合,使C++实现了运行时的多态性。而多态性是面向对象程序设计的重要特性。因为这个特性,使得能在基类中说明本类的派生类都共有的函数,并使派生类对它们的特定功能再进行定义。基类

3、提供了派生类能直接使用的所有元素和派生类自己实现的函数。由于接口的形式已由基类定义,所以任何派生类都享有同一接口。这种基类定义派生类的通用接口,派生类各自定义自己的具体方法,就是常用的“同一接口,多种方法”。18.2纯虚函数和抽象基类18.2.1纯虚函数纯虚函数是定义在基类中的一种函数,在基类定义中只给出函数的原型,它没有任何与该基类有关的定义。这样的函数就叫做纯虚函数。纯虚函数的存在,使得任意派生类都必须定义自己的函数版本。否则,在编译时给出错误信息。纯虚函数定义的一般形式为:virtualtyp

4、efunc_name(paraneter_list)=0;其中,type是纯虚函数的返回类型;func_name是所定义的纯虚函数的函数名;paraneter_list是纯虚函数的参数。18.2.2抽象基类我们已经知道,含有纯虚函数的基类称为抽象基类。抽象基类有一个重要特性:即抽象类不能建立对象。抽象基类只能用作其它类继承的基类。例如,对于抽象基类number,下面建立对象n的语句是错误的:numbern;抽象类可以有指向自己的指针,以支持运行时的多态性,例如,下面的语句是合法的:number*pn

5、;18.3编译连接与执行连接在面向对象程序设计语言的讨论中,常用到两个术语:先连接(earlybinding)和后连接(latebinding)。先连接指编译时进行连接,后连接指运行程序时才进行连接,也称执行连接。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。