C++继承与派生讲义.pptVIP

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

Object Oriented 第三节 多继承 class B { public: int b; } class B1 : public B { private: int b1; } class B2 : public B { private: int b2; }; class C : public B1,public B2 { public: int f( ); private: int d; } b b1 b b2 d B类成员 B类成员 B1类成员 B2类成员 C类对象 派生类C的对象的存储结构示意图: Object Oriented 第三节 多继承 B B1 B2 C b1 b2 d B1类成员 B2类成员 C类对象 b B类成员 虚基类的派生类对象存储结构示意图: Object Oriented 第四节 基类和派生类的赋值规则 一、赋值兼容性规则 在公有继承方式下,基类与派生类具有以下赋值规则: ⑴ 可以将派生类对象赋值给基类对象。即: 基类对象=派生类对象; 如: Base ob1; Derived ob2(2.0,3.0,4.0); ob1=ob2; (相当于:ob1.x=ob2.x ; ob1.y=ob2.y) 注意:不能将基类对象赋值给派生类对象 (思考:为什么?) Object Oriented 第四节 基类和派生类的赋值规则 ⑵ 基类的对象指针可以指向基类对象,也可以指向派生类对象。即: 基类对象指针=派生类对象指针; 或: 基类对象指针=派生类对象; 如: Base ob1,*pb; Derived ob2(2.0,3.0,4.0),*pd; ob1=ob2; pb=ob1;pd=ob2; pb=pd; pb=ob2; 这样就可以用基类指针变量访问派生类对象从基类继承的数据成员。 Object Oriented 第四节 基类和派生类的赋值规则 ⑶ 可以将派生类的对象引用赋值给基类的对象引用。即: 基类的对象引用=派生类的对象引用 或: 基类名 基类的引用名=派生类对象名 如: Base ob1, cb=ob1; Derived ob2(2.0,3.0,4.0),cd=ob2; cb=cd; Base c=ob2; 例:分析程序的输出结果,熟悉基类与派生类的兼容性规则(5.18.cpp)。 注意:私有派生时无以上规则 Object Oriented 第四节 基类和派生类的赋值规则 二、基类和派生类的对象指针 在公有继承方式下,基类指针既可以指向基类的对象,也可以指向派生类的对象——C++实现运行时多态性的关键途径; 基类指针指向派生类对象后,可直接访问该对象从基类继承的公有成员,如果要访问派生类新增的公有成员,需要用强制类型转换成派生类指针。格式: ((派生类名*)基类指针名)-新增成员; 例:分析程序的输出结果,熟悉用基类指针访问派生类对象的方法(4-zhizhen.cpp) 。 Object Oriented 第四节 基类和派生类的赋值规则 #includeiostream using namespace std; class Base //基类Base的定义 { private: float x,y; public: Base(float a=0,float b=0) {x=a;y=b;coutbase constructendl;} void setBase(float a=0,float b=0) {x=a;y=b;} float getx(void) {return x;} float gety(void) {return y;} }; Object Oriented 第四节 基类和派生类的赋值规则 class Derived:public Base //派生类Derived的定义——注意定义方法 { private: float z; public: Derived(float a=0,float b=0,float c=0):Base(a,b) { z=c;coutderived constructendl; } //派生类的构造函数定义 void setDerived(float a=0,float b=0,float c=0) { Base::setBase(a,b);z=c;} float getz(void){return z;} }; Object Orie

文档评论(0)

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

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

1亿VIP精品文档

相关文档