网站大量收购闲置独家精品文档,联系QQ:2885784924

多态性用同样的口访问功能不同的函数.pptVIP

多态性用同样的口访问功能不同的函数.ppt

  1. 1、本文档共22页,可阅读全部内容。
  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文档。上传文档
查看更多
多态性用同样的口访问功能不同的函数

多态性 多态性:用同样的接口访问功能不同的函数 函数联编 静态联编:指系统在编译时就决定如何实现某个动作。 特点: 要求在程序编译时就知道调用函数的全部信息。 函数调用速度很快,效率高 通过函数重载而后运算符重载实现 动态联编:指系统在运行时动态实现某个动作 特点: 要到程序运行时才能确定调用哪个函数 提供更好的灵活性、问题抽象性和程序易维护性 通过继承和虚函数实现 静态联编(通过对象的类型区别) 重新在派生类中定义基类的函数 运行时的多态性 指定关键字virtual,在运行时对函数动态联编,根据实际对象,调用该对象的成员函数 虚函数 虚函数:为实现某种功能而假设的函数,虚函数只能是类中的一个成员函数,不能是静态成员 格式:virtual 数据类型 函数名(参数) 说明: 虚函数的访问权限 派生类中定义的虚函数的访问权限不影响对它进行动态联编。 一个类中的虚函数说明只对派生类中重定义的函数有影响,对它的基类中的函数无影响 在成员函数中调用虚函数 在一个基类或派生类的成员函数中可直接调用该类等级中的虚函数 构造函数和析构函数调用虚函数 在构造函数和析构函数中调用虚函数时,采用静态联编,即调用的虚函数是自己的类或基类中定义的函数,不是任何在派生类中重定义的虚函数 空的虚函数 空虚函数为实现虚函数支配关系的不间断。 纯虚函数与抽象类 基类中不能为虚函数给出一个有意义的定义,这时可将它说明为纯虚函数。 形式: class 类名{ virtual 类型 函数名(参数列表)=0; }; 虚析构函数 只要基类的析构函数被说明为虚函数,则派生类的析构函数自动成为虚函数。而构造函数的调用意味着建立一个对象,这时必须确切的知道这个对象的类型,因此无意义 虚析构函数的说明: virtual ~类名(){…} 例:class A{ public: A( ){ } virtual ~A( ){cout“Destructor A”endl;} }; class B:public A{ public: B( ){ } ~B( ){cout“Destructor B”endl;} }; void main() { A *pa=new B; delete pa; } 下列关于动态联编的描述中,错误的是( ) A)动态联编是以虚函数为基础的 B)动态联编是在运行时确定所调用的函数代码的 C)动态联编调用函数操作是指向对象的指针或对象引用 D)动态联编是在编译时确定操作函数的 关于虚函数的描述中,正确的是( ) A)虚函数是一个静态成员函数 B)虚函数是一个非成员函数 C)虚函数既可以在函数说明时定义,也可以在函数实现时定义 D)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 下面关于构造函数和析构函数的描述,错误的是( ) A)析构函数中调用虚函数采用静态联编 B)对虚析构函数的调用可以采用动态联编 C)当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数 D)构造函数可以声明为虚函数 关于纯虚函数和抽象类的描述中,错误的是( ) A)纯虚函数是一种特殊的虚函数,它没有具体的实现 B)抽象类是指具有纯虚函数的类 C)一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类 D)抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出 以下( )成员函数表示纯虚函数 A)virtual int vf(int); B)void vf(int)=0; C) virtual void vf()=0; D)virtual void vf(int){ } 在下面程序中,A、B、C、D四句编译时出现错误的是 class A //A { public: //B A(){func();} //C virtual void func()=0; //D }; * * * * * class squared{ public: int squ(int){… } double squ(double){…} long squ(long){…} }; void main() { squared value; coutvalue.squ(3); coutvalue.squ(3.5); coutvalue.squ(6L); } 通过实参的特征区别 class point{… float area(){return 0.0;} }; class circle:public point{… f

文档评论(0)

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

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

1亿VIP精品文档

相关文档