欢迎来到天天文库
浏览记录
ID:37565941
大小:282.81 KB
页数:16页
时间:2019-05-12
《林业大学第十二章多态类》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第12章多态类多态是面向对象程序设计的又一大特征。多态性是指发出同样的消息被不同类型的对象接收时产生完全不同的行为,简单的说就是“一个接口,多种算法”。第12章多态类要点:虚函数的定义及使用方法纯虚函数及抽象类的基本概念重点内容:虚函数的定义及使用方法一、虚函数1.虚函数的定义格式在一个类中用关键字virtual说明的成员函数称为虚函数,其定义的格式如下:virtual函数类型函数名(形参表){函数体}定义虚函数就是为了实现多态类。在基类中某个成员函数被声明为虚函数后,这个成员函数通常要在派生类中被重新定义,否则定义虚函数就没有意义。一、虚函数如果在基类中说明了的虚函数,在它的派
2、生类中与基类中虚函数说明相同的函数一定是虚函数,可以省略关键字virtual。但从程序的易读性出发,最好不要省略派生类中重定义虚函数时的virtual关键字。一、虚函数例12.1虚函数的定义及使用。#includeclassCountry{public:virtualvoidDisplay()//虚函数{cout<<"世界上有很多国家。"<3、Country{public:virtualvoidDisplay(){cout<<"美国和我们隔洋相对。"<Display();pc=&am;pc->Display();pc=&ch;pc->Display();}一、虚函数2.虚析构函数析构函数是在该类对象消亡之前进行一些必要的清理工作,对于动态绑定的虚函数必须用虚析构函数进行释放。一、虚函数例12.2虚析构函数应用举例。#includeclassA{public:virtualvo4、iddisplay(){cout<<"displayA"<display();deletepb;}二、纯虚函数和抽象类1.纯虚函数纯虚函数是一种特殊的虚函数,它只有函数的声明,并没有具体实现函数的功能。它的一5、般格式如下:virtual<函数返回类型><虚函数名称><(参数列表)>=0;#includeclassShape{public:Shape(doubledfx=0.0,doubledfy=0.0);virtualvoidDraw()=0;//纯虚函数protected:doubleFirstX;//第一点x坐标doubleFirstY;//第一点y坐标};Shape::Shape(doubledfx,doubledfy){FirstX=dfx;FirstY=dfy;}classLine:publicShape{public:Line(doubledfx=6、0.0,doubledfy=0.0,doubledsx=0.0,doubledsy=0.0);voidDraw();protected:doubleSecondX;//第二点x坐标doubleSecondY;//第二点y坐标};Line::Line(doubledfx,doubledfy,doubledsx,doubledsy):Shape(dfx,dfy){SecondX=dsx;SecondY=dsy;}voidLine::Draw(){cout<<"绘制一条直线,第一点坐标为:("<7、,"<
3、Country{public:virtualvoidDisplay(){cout<<"美国和我们隔洋相对。"<Display();pc=&am;pc->Display();pc=&ch;pc->Display();}一、虚函数2.虚析构函数析构函数是在该类对象消亡之前进行一些必要的清理工作,对于动态绑定的虚函数必须用虚析构函数进行释放。一、虚函数例12.2虚析构函数应用举例。#includeclassA{public:virtualvo
4、iddisplay(){cout<<"displayA"<display();deletepb;}二、纯虚函数和抽象类1.纯虚函数纯虚函数是一种特殊的虚函数,它只有函数的声明,并没有具体实现函数的功能。它的一
5、般格式如下:virtual<函数返回类型><虚函数名称><(参数列表)>=0;#includeclassShape{public:Shape(doubledfx=0.0,doubledfy=0.0);virtualvoidDraw()=0;//纯虚函数protected:doubleFirstX;//第一点x坐标doubleFirstY;//第一点y坐标};Shape::Shape(doubledfx,doubledfy){FirstX=dfx;FirstY=dfy;}classLine:publicShape{public:Line(doubledfx=
6、0.0,doubledfy=0.0,doubledsx=0.0,doubledsy=0.0);voidDraw();protected:doubleSecondX;//第二点x坐标doubleSecondY;//第二点y坐标};Line::Line(doubledfx,doubledfy,doubledsx,doubledsy):Shape(dfx,dfy){SecondX=dsx;SecondY=dsy;}voidLine::Draw(){cout<<"绘制一条直线,第一点坐标为:("<7、,"<
7、,"<
此文档下载收益归作者所有