NO9多态性和虚函数电子课件 C++程序设计案例教程中职 高二 工信版

2023-01-04
| 14页
| 102人阅读
| 0人下载
普通

内容正文:

多态性和虚函数 多态性是面向对象程序设计的重要特征之一。所谓多态,是指当不同对象收到相同消息时会产生不同的行为。C++的多态性具体体现在运行和编译两个方面。在程序编译时,多态性体现在函数和运算符的重载上,这种多态也称静态多态性;在程序运行时,多态性体现在继承和虚函数上,这种多态也称动态多态性。 基类和派生类的同名函数可以通过对象名调用,但为了统一调用形式,可以用基类指针调用。C++系统使用虚函数的方法,使基类指针能在程序执行时确定调用基类还是派生类的同名函数。 当虚函数被多个派生类重写,基类中的虚函数体失去意义时,可定义基类中的虚函数为纯虚函数。包含纯虚函数的类称为抽象类。抽象类不能建立对象,但为派生类提供了接口。 目录 第9章 C++程序设计案例教程 9.1 多态性和虚函数 Add your text in here Click to add Text 分别用对象名和指针变量调用基类和 派生类中的同名函数 案例引入 建立有继承关系的两个类,这两个类中包含同名且参数一致的函数。用派生类对象分别调用基类和派生类中的同名函数,再用指针变量代替基类对象和派生类对象调用同名函数,观察程序的运行结果。 9.1.1 多态性 目录 第9章 C++程序设计案例教程 9.1.1 多态性 源代码展示 #include <iostream> using namespace std; class Graph { protected: int len; public: Graph(int i) { len=i; } void display() { cout<<"len="<<len<<endl; } }; …… 目录 第9章 C++程序设计案例教程 9.1.1 多态性 运行结果 目录 第9章 C++程序设计案例教程 9.1.1 多态性 程序分析 程序中的两个类是继承的层次关系。这两个类中包含名字相同、参数相同(都无参)的成员函数display()。派生类Rectangle继承基类Graph后,就屏蔽了基类的同名函数。 程序执行时,可以通过对象名调用函数display()。当派生类对象调用此函数时,调用的是自己的display()。如果要通过派生类对象调用基类的函数display(),需要在调用函数前增加类名,例如: r.Graph::display(); 当然,可以使用指针变量代替对象名调用函数。如果使用指针变量,可以随时将执行对象的地址赋给指针。这样一来,无论对象是什么,代码都可以统一采用p->display()的形式。 目录 第9章 C++程序设计案例教程 知识讲解 在继承的机制中,派生类新增的成员函数很可能与继承得来的基类的成员函数同名,并且参数个数和参数类型也相同,因此,这种现象不属于函数重载。如果用派生类对象调用同名的成员函数,派生类会屏蔽继承的基类的成员函数,执行自己新增的成员函数。如果要用派生类对象调用继承的基类同名函数,需要在函数前增加基类名。 调用了名字相同的函数,却执行了不同的结果,这体现了C++的多态性。 目录 第9章 C++程序设计案例教程 9.1.2 虚函数的使用 Add your text in here Click to add Text 建立虚函数,用基类指针访问派生类的同名函数 案例引入 修改9.1.1案例,在基类中,将与派生类函数同名的函数修改为虚函数。 目录 第9章 C++程序设计案例教程 9.1.2 虚函数的使用 源代码展示 #include <iostream> using namespace std; class Graph { protected: int len; public: Graph(int i):len(i){} virtual void display() { cout<<"len="<<len<<endl; } }; class Rectangle:public Graph { private: int width; public: Rectangle(int l,int w):Graph(l),width(w){} void display() { cout<<"area="<<len<<"*"<<width<<"="<<len*width<<endl; } }; int main() { Graph *p; Rectangle r(1,2); p=&r; p->display (); return 0; } 目录 第9章 C++程序设计案例教程 9.1.2 虚函数的使用 运行结果 程序分析 如何通过基

资源预览图

NO9多态性和虚函数电子课件  C++程序设计案例教程中职  高二 工信版
1
NO9多态性和虚函数电子课件  C++程序设计案例教程中职  高二 工信版
2
NO9多态性和虚函数电子课件  C++程序设计案例教程中职  高二 工信版
3
NO9多态性和虚函数电子课件  C++程序设计案例教程中职  高二 工信版
4
NO9多态性和虚函数电子课件  C++程序设计案例教程中职  高二 工信版
5
NO9多态性和虚函数电子课件  C++程序设计案例教程中职  高二 工信版
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。