3.2继承和派生类.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文档。上传文档
查看更多
3.2继承和派生类.ppt

3.2 继承和派生类 3.2.1 单继承 3.2.2 派生类的构造函数和析构函数 3.2.3 多继承 3.2.4 虚基类 class B : public A // 从A派生,公有继承 { private: int b1; float b2; public: B(int x1 = 1,float x2=2,int y1=3,float y2=4): A(x1,x2),b1(y1),b2(y2) { cout类B的构造函数调用endl; coutb1:b1,b2:b2endl; } ~B(void) { } }; void main() { B LL; char a[10]; cin.getline(a,sizeof(a)); } 中国矿业大学(北京)地球科学与测绘工程学院 3.2.1单继承 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。例如: class CStick : public CMeter { int m_nStickNum; // 声明一个私有数据成员 public: void DispStick(); // 声明一个公有成员函数 }; // 注意分号不能省略 void CStick:: DispStick() { m_nStickNum = GetPos(); // 调用基类CMeter的成员函数 coutm_nStickNum’ ’; } 从基类CMeter派生的CStick类除具有CMeter所有公有成员和保护成员外,还有自身的私有数据成员m_nStickNum和公有成员函数DispStick()。 注意: 派生类中或派生类的对象可以使用基类的公有成员(包括保护成员),例如:CStick的成员函数DispStick中调用了基类CMeter的GetPos函数,oStick对象调用了基类的StepIt成员函数;但基类或基类的对象却不可以使用派生类的成员。 3.2继承和派生类 私有继承(private) 私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。 [例Ex_ClassPrivateDerived] 派生类的私有继承示例。 #include iostream using namespace std; class CMeter { public: CMeter(int nPos = 10) { m_nPos = nPos; } ~CMeter() { } void StepIt(){ m_nPos++; } int GetPos(){ return m_nPos; } protected: void SetPos(int nPos) { m_nPos = nPos; } private: int m_nPos; }; 3.2继承和派生类 class CStick : private CMeter // 从CMeter派生,私有继承 { int m_nStickNum; // 声明一个私有数据成员 public: void DispStick(); // 声明一个公有成员函数 void SetStick(int nPos) { SetPos(nPos); } int GetStick() { return GetPos(); } }; void CStick:: DispStick() { m_nStickNum = GetPos(); // 调用基类CMeter的成员函数 coutm_nStickNum ; } ?void main() { CMeter oMeter(20); CStick oStick; coutCMeter:oMeter.GetPos(),CStick:oStick.GetStick()endl; oMeter.StepIt(); coutCMeter:oMeter.GetPos(),CStick:oStick.GetStick()endl; oStick.DispStick(); char a[10]; cin.getline(a,sizeof(a)); } 3.2继承和派生类 运行结果: CMeter:20,CStick:10 CMeter:21,CStick:10 10 保护继承(protected) 特点是基类的所有公有成员和保

文档评论(0)

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

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

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档