第10章虚函数和多态性 10 10.2象类 10.3应折控原数 10.4多态 人民邮电出版社 POSTS tEl OM PRE 动此映
第10章 虚函数和多态性 10.1 虚 函 数 10.2 抽 象 类 10.3 虚 析 构 函 数 10.4 多 态
所谓多态,是指不同对象对相同消息 作出不同的响应。多态是通过继承 虚函数以及动态联编来实现的 人民邮电出版社 POSTS tEl OM PRE 动此映
所谓多态,是指不同对象对相同消息 作出不同的响应。多态是通过继承、 虚函数以及动态联编来实现的
10.1虛函数 10.1.1虚函数的定义 虚函数是实际上不存在,但确实影响程序 某些部分的函数。虚函数 有多态性,即派生的类有共同的函数,这 些共同的函数有着相同的函数名称和相同 的参数,但是却有各自不同的具体实现部 分 人民邮电出版社 POSTS tEl OM PRE 动此映
10.1 虚 函 数 10.1.1 虚函数的定义 虚函数是实际上不存在,但确实影响程序 某些部分的函数。虚函数 有多态性,即派生的类有共同的函数,这 些共同的函数有着相同的函数名称和相同 的参数,但是却有各自不同的具体实现部 分
虚函数的定义方法如下: virtual 定义虚函数要遵循下列规则: (1)类的静态成员函数不可以定义为虚函 数 (2)类的构造函数不可以定义为虚函数。 (3)非类的成员函数不可以定义为虚函数。 人民邮电出版社 POSTS tEl OM PRE 动此映
虚函数的定义方法如下: virtual ; 定义虚函数要遵循下列规则: (1)类的静态成员函数不可以定义为虚函 数。 (2)类的构造函数不可以定义为虚函数。 (3)非类的成员函数不可以定义为虚函数
【例10.1】假设一个程序可用来绘制不同 的形状,比如三角形、圆、矩形、椭圆等 等,并假设这些类中每个类都有一个成员 函数 drawL,通过该函数可绘制对象。分 析下列程序的输出结果 人民邮电出版社 POSTS tEl OM PRE 动此映
【例10.1】假设一个程序可用来绘制不同 的形状,比如三角形、圆、矩形、椭圆等 等,并假设这些类中每个类都有一个成员 函数draw(),通过该函数可绘制对象。分 析下列程序的输出结果
#include iostream. h' class person public void printInfoO 基类中的函数 cout<<"Personn"; 人民邮电出版社 POSTS tEl OM PRE 动此映
#include "iostream.h" class person { public: void printInfo() //基类中的函数 { cout<<"Person\n"; } };
class worker: public person pl rivate int kindofwork: public: void printInfo o 在派生类 worker 中重新定义 cout<<Worker\" 人民邮电出版社 POSTS tEl OM PRE 动此映
class worker: public person { private: int kindofwork; public: void printInfo () //在派生类worker中重新定义 { cout<<"Worker\n"; } };
class teacher: public person rivate. int subject ublic void printInfo o 在派生类 teacher中重新定义 cout<< Teacherln }; 人民邮电出版社 POSTS tEl OM PRE 动此映
class teacher: public person { private: int subject; public: void printInfo () //在派生类teacher中重新定义 { cout<<"Teacher\n"; } };
void maino worker w teacher t; person* p; p=&w; ∥w是 worker类对象 p->printInfo0; p=&t; p->printInfoo 人民邮电出版社 POSTS tEl OM PRE 动此映
void main() { worker w; teacher t; person* p; p = &w; // w是worker类对象 p->printInfo(); p = &t; p->printInfo(); }
程序的执行结果为: Person P erson 人民邮电出版社 POSTS tEl OM PRE 动此映
程序的执行结果为: Person Person