欢迎来到天天文库
浏览记录
ID:51963516
大小:182.50 KB
页数:45页
时间:2020-03-26
《C++程序设计基础 安志远ppt第6章 虚函数和多态性.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章虚函数和多态性1目标理解静态联编和动态联编的含义熟练掌握虚函数的使用掌握虚析构函数的作用掌握抽象类掌握多态性26.1静态联编和动态联编36.1静态联编和动态联编联编是指一个程序模块、代码之间的关联过程,也就是把一个标识符名和一个存储地址联系在一起的过程。按照联编进行阶段的不同,可以分为静态联编和动态联编。46.1静态联编和动态联编1.静态联编所谓静态联编,是指程序之间的匹配、连接工作在编译阶段,即程序运行之前完成,也称为早期联编。函数重载和运算符重载就属于静态多态性。所谓函数重载是指同一个函数名可以对应着多个函数的实现。每一种函数的实现对应相同的函数名,但是函数参数的个数不
2、同。5【例6.1】参数个数不同的重载函数实例。#includeclassMaxClass{private:intx,y,w,h;public:MaxClass(int,int,int,int);intmax(int,int);intmax(int,int,int);intmax(int,int,int,int);voiddisplay();};MaxClass::MaxClass(inta,intb,intc,intd){x=a;y=b;w=c;h=d;}6intMaxClass::max(inta,intb){x=a;y=b;returnx>y?x:y;
3、}intMaxClass::max(inta,intb,intc){w=c;returnmax(a,b)>w?max(a,b):w;}intMaxClass::max(inta,intb,intc,intd){h=d;returnmax(a,b,c)>d?max(a,b,c):h;}voidMaxClass::display(){cout<<"四个数是:"<4、;cout<<"计算前三个数中的最大数为:“<5、来确定该调用的函数,这种联编工作称为动态联编,也称为晚期联编。C++的动态联编是通过虚函数和基类的指针实现的,是一种动态多态。在后面的例题中可以从中了解。96.2虚函数6.2.1虚函数的定义6.2.2虚函数与动态联编6.2.3虚函数的重载6.2.4虚析构函数106.2.1虚函数的定义引入虚函数的目的。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。116.2.1虚函数的定义2.虚函数的定义虚函数的定义是在基类中进行的。虚函数的定义语法格式如下:virtual<函数类型><函数名>(形参表){函数体}126.2.1虚函6、数的定义3.定义虚函数时,要注意遵循以下规则:1)只有成员函数才能声明为虚函数,因为虚函数仅适用于有继承关系的类对象,所以普通函数不能声明为虚函数。2)虚函数的声明只能出现在类声明中的函数原型声明中,而不能出现在成员的函数体实现上。3)类的静态成员函数不可以定义为虚函数,因为静态成员函数不受限于某个对象。136.2.1虚函数的定义定义虚函数时,要注意遵循以下规则:4)类的构造函数不可以定义为虚函数。多态是指不同的对象对同一消息有不同的行为特性。虚函数作为运行过程中多态的基础,主要是针对对象的,而构造函数是在对象产生之前运行的,因此,虚构造函数是没有意义的。5)内联函数不能声明为虚7、函数,因为内联函数不能在运行中动态确定其位置。146.2.2虚函数与动态联编虚函数是动态联编的基础,如果某个类中的一个成员函数被说明为虚函数,则当使用指针或引用所标识的对象操作这个成员函数时,对该成员函数调用采用动态联编的方式,即在运行时进行关联或束定。虚成员函数是动态联编的,即在运行时是根据对象类型而不是指向该对象的指针或引用类型选择成员函数。动态联编只能通过指针或引用所标识对象来操作虚函数。15【例6.5】使用虚函数例题。#include#includ
4、;cout<<"计算前三个数中的最大数为:“<5、来确定该调用的函数,这种联编工作称为动态联编,也称为晚期联编。C++的动态联编是通过虚函数和基类的指针实现的,是一种动态多态。在后面的例题中可以从中了解。96.2虚函数6.2.1虚函数的定义6.2.2虚函数与动态联编6.2.3虚函数的重载6.2.4虚析构函数106.2.1虚函数的定义引入虚函数的目的。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。116.2.1虚函数的定义2.虚函数的定义虚函数的定义是在基类中进行的。虚函数的定义语法格式如下:virtual<函数类型><函数名>(形参表){函数体}126.2.1虚函6、数的定义3.定义虚函数时,要注意遵循以下规则:1)只有成员函数才能声明为虚函数,因为虚函数仅适用于有继承关系的类对象,所以普通函数不能声明为虚函数。2)虚函数的声明只能出现在类声明中的函数原型声明中,而不能出现在成员的函数体实现上。3)类的静态成员函数不可以定义为虚函数,因为静态成员函数不受限于某个对象。136.2.1虚函数的定义定义虚函数时,要注意遵循以下规则:4)类的构造函数不可以定义为虚函数。多态是指不同的对象对同一消息有不同的行为特性。虚函数作为运行过程中多态的基础,主要是针对对象的,而构造函数是在对象产生之前运行的,因此,虚构造函数是没有意义的。5)内联函数不能声明为虚7、函数,因为内联函数不能在运行中动态确定其位置。146.2.2虚函数与动态联编虚函数是动态联编的基础,如果某个类中的一个成员函数被说明为虚函数,则当使用指针或引用所标识的对象操作这个成员函数时,对该成员函数调用采用动态联编的方式,即在运行时进行关联或束定。虚成员函数是动态联编的,即在运行时是根据对象类型而不是指向该对象的指针或引用类型选择成员函数。动态联编只能通过指针或引用所标识对象来操作虚函数。15【例6.5】使用虚函数例题。#include#includ
5、来确定该调用的函数,这种联编工作称为动态联编,也称为晚期联编。C++的动态联编是通过虚函数和基类的指针实现的,是一种动态多态。在后面的例题中可以从中了解。96.2虚函数6.2.1虚函数的定义6.2.2虚函数与动态联编6.2.3虚函数的重载6.2.4虚析构函数106.2.1虚函数的定义引入虚函数的目的。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。116.2.1虚函数的定义2.虚函数的定义虚函数的定义是在基类中进行的。虚函数的定义语法格式如下:virtual<函数类型><函数名>(形参表){函数体}126.2.1虚函
6、数的定义3.定义虚函数时,要注意遵循以下规则:1)只有成员函数才能声明为虚函数,因为虚函数仅适用于有继承关系的类对象,所以普通函数不能声明为虚函数。2)虚函数的声明只能出现在类声明中的函数原型声明中,而不能出现在成员的函数体实现上。3)类的静态成员函数不可以定义为虚函数,因为静态成员函数不受限于某个对象。136.2.1虚函数的定义定义虚函数时,要注意遵循以下规则:4)类的构造函数不可以定义为虚函数。多态是指不同的对象对同一消息有不同的行为特性。虚函数作为运行过程中多态的基础,主要是针对对象的,而构造函数是在对象产生之前运行的,因此,虚构造函数是没有意义的。5)内联函数不能声明为虚
7、函数,因为内联函数不能在运行中动态确定其位置。146.2.2虚函数与动态联编虚函数是动态联编的基础,如果某个类中的一个成员函数被说明为虚函数,则当使用指针或引用所标识的对象操作这个成员函数时,对该成员函数调用采用动态联编的方式,即在运行时进行关联或束定。虚成员函数是动态联编的,即在运行时是根据对象类型而不是指向该对象的指针或引用类型选择成员函数。动态联编只能通过指针或引用所标识对象来操作虚函数。15【例6.5】使用虚函数例题。#include#includ
此文档下载收益归作者所有