包含了所有的虚函数.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
包含了所有的虚函数.ppt

面向对象程序设计——C++;第5章 多态性;编译期绑定和执行期绑定;没有虚函数的情况;举例;#include iostream #include string using namespace std; class Employee{ public: Employee(string name ,string id){ this-name=name; this-id=id; } void print(){//输出姓名和身份证号 cout姓名: name\t\t 编号: idendl; } protected: string name; string id; }; ;class Manager:public Employee{ public: Manager(string Name,string id,float s=0.0):Employee(Name,id) { WeeklySalary=s; } void print(){cout经理:name\t\t 编号: id \t\t 周工资: WeeklySalaryendl; } private: float WeeklySalary; //周薪 }; void main(){ Employee e(黄春秀,NO0009),*pM; Manager m(刘大海,NO0001,128); m.print(); pM=m; pM-print(); Employee rM=m; rM.print(); };虚函数的意义;虚函数的意义;基类指针或引用指向派生类对象时,虚函数与非虚函数的对象,左图为非虚函数,右图为虚函数;多态性的前提条件;class Base { int data; virtual int add(int i){return i;}; virtual string toString(){ return string(“Base”) }; }; class Derived: public Base { public: string toString()//与基类的函数同名 { return string( Derived ); } }; //调用代码 Base* s = new Derived(); couts-toString()endl; delete s; ;虚函数的背后;多态的实现;虚表vtable与虚表指针vptr;class B { int i, j, k; virtual f ( ) {}; virtual g ( ) {}; }; class D: public B { int i, m; f ( ) {}; };;虚函数;虚函数;虚函数的特性 ;虚函数的特性 ;虚函数的特性 ;虚函数的特性 ;虚函数的特性 ;虚函数的特性 ;虚函数的特性 ;虚函数的特性;class B{ public: void f ( ) { cout bf ; }; virtual void vf ( ) { cout bvf ; }; void ff ( ) { vf(); f(); }; virtual void vff ( ) { vf(); f(); }; }; class D: public B{ public: void f ( ) { cout df ; }; void ff ( ) { f(); vf(); }; void vf ( ) { cout dvf ; }; }; void main(){ D d; B * pB = d; pB-f(); pB-ff(); pB-vf(); pB-vff(); };虚析构函数 ;#include iostream using namespace std; class A{ public: ~A(){ coutcall A::~A()endl; } }; class B:public A{ char *buf; public: B(int i){buf=new char[i];} ~B(){ delete [] buf; coutcall B::~()endl; } }; void main(){ A* a=new B(10); delete a;//调用的是A的虚构函数 };class A{

您可能关注的文档

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档