林业大学第十二章多态类.pptVIP

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
林业大学第十二章多态类.ppt

第12章 多态类  多态是面向对象程序设计的又一大特征。多态性是指发出同样的消息被不同类型的对象接收时产生完全不同的行为,简单的说就是“一个接口,多种算法”。 第12章 多态类 要点: ??虚函数的定义及使用方法 ??纯虚函数及抽象类的基本概念 重点内容: 虚函数的定义及使用方法 一、虚函数 1. 虚函数的定义格式 在一个类中用关键字virtual说明的成员函数称为虚函数,其定义的格式如下: virtual 函数类型 函数名(形参表) { 函数体 } 定义虚函数就是为了实现多态类。在基类中某个成员函数被声明为虚函数后,这个成员函数通常要在派生类中被重新定义,否则定义虚函数就没有意义。 一、虚函数   如果在基类中说明了的虚函数,在它的派生类中与基类中虚函数说明相同的函数一定是虚函数,可以省略关键字virtual。但从程序的易读性出发,最好不要省略派生类中重定义虚函数时的virtual关键字。 一、虚函数 例12.1 虚函数的定义及使用。 #include iostream.h class Country {  public: virtual void Display() //虚函数   { cout 世界上有很多国家。 endl;   } }; class China : public Country { public: virtual void Display() {cout 中国是我们伟大的祖国。 endl;} }; class America: public Country { public: virtual void Display() {cout 美国和我们隔洋相对。 endl;} }; void main() { Country *pc,c; America am; China ch; pc = c; pc-Display(); pc = am; pc-Display(); pc = ch; pc-Display(); } 一、虚函数 2. 虚析构函数 析构函数是在该类对象消亡之前进行一些必要的清理工作,对于动态绑定的虚函数必须用虚析构函数进行释放。 一、虚函数 例12.2 虚析构函数应用举例。 #includeiostream.h class A { public: virtual void display() { coutdisplay Aendl; } virtual ~A() { coutDelete object of Aendl; } }; class B:public A { public: virtual void display() { coutdisplay Bendl; } virtual ~B() { coutDelete object of Bendl; } }; void main() {  A *pb=new B;  pb-display();  delete pb; } 二、纯虚函数和抽象类 1.纯虚函数 纯虚函数是一种特殊的虚函数,它只有函数的声明,并没有具体实现函数的功能。它的一般格式如下: virtual 函数返回类型 虚函数名称 (参数列表) = 0; #include iostream.h class Shape { public: Shape(double dfx = 0.0, double dfy = 0.0); virtual void Draw() = 0; //纯虚函数 protected: double FirstX; //第一点x坐标 double FirstY; //第一点y坐标 }; Shape::Shape(double dfx, double dfy) { FirstX = dfx; FirstY = dfy; } class Line : public Shape { public: Line(double dfx = 0.0, double dfy = 0.0, double dsx = 0.0, double dsy = 0.0) ; void Draw(); protected: double SecondX; //第二点x坐标 double SecondY; //第二点y坐标 }; Line::Line(double dfx, double dfy, do

文档评论(0)

ziyouzizai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档