- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工程科技]第八章-继承与派生
* 北京邮电大学信息与通信工程学院 -*- 8.4.2 基类到派生类的转换 8.4.2 基类到派生类的转换 C++编译器可以自动将派生类对象转换为基类对象(隐式类型转换) 从基类到派生类的自动转换是不存在的 //以下代码仅为示例 TShape s; TCircle c = s; //错误!不能将基类转换为派生类 TCircle* pc = s; //错误!不能将基类转换为派生类 TCircle rc = s; //错误!不能将基类转换为派生类 总结 类的继承性及其相关概念 派生类可以以公有、保护和私有3种方式继承基类 派生类能够继承基类中除构造函数和析构函数之外的所有成员 派生类定义自己的构造函数和析构函数。在定义派生类的构造函数时,不仅要考虑派生类新增数据成员的初始化,还要注意在成员初始化列表中对基类构造函数的调用和内嵌对象数据成员进行初始化。 * * 新类继承了基类的属性和行为 新类是基类的特殊情况。 继承 使得程序员可以利用已有的代码 继承是处理“特殊情况”的面向对象编程机制 * * * 不同的继承方式使得派生类从基类继承的成员具有不同的访问控制权限,以实现数据的安全性和共享性控制。 * * 使用派生类的 对象 只能访问基类的public成员 * 如果此处填private,那么在 class Rect中的 X=x; Y=y 会出错; 将private 改成public,那么在 class Rect中的 X=x; Y=y 不会出错;但是同样 coutr.X也不会出错 只有将此处填protected,在class Rect中的X=x; Y=y 不会出错;而只有 main中第三行汇报错 * * * 对于任意继承方式,基类的私有成员对于派生类是“不可访问的”。 对于公共继承方式,基类的公共成员为派生类的公共成员,基类的保护成员为派生类的保护成员。 对于保护继承方式,基类的公共的和保护的成员变为派生类的保护成员。 对于私有继承方式,基类的公共的和保护的成员变为派生类的私有成员。 * 答案B * * * * * * * * * * * * * * * * * 继承方式影响访问控制 public: protected: private: public public protected private protected protected protected private private private private private 基类存取方式 继承类型 派生类继承的基类成员的访问属性 * 北京邮电大学信息与通信工程学院 -*- 8.2.4 同名覆盖 8.2.4 同名覆盖 override class base { public: void f ( ) {coutbaseendl;} }; class deriver: public base { public: void f ( ) {coutderiverendl;} }; int main( ) { deriver derobj; derobj.f (); return 0; } 输出结果? A: base B: deriver 在派生类中声明了一个与基类成员同名的新成员 OverRide 只能访问到派生类中的同名新成员 在派生类作用域内或者 在类外通过派生类的对 象直接使用这个成员名 class Shape { public: ┇ void Draw(){ }; protected: ┇ }; class Triangle: public Shape { public: Triangle( int x, int y, char color=R, float slen = 1 ); float GetSideLength( ) const; void SetTriangle( int x, int y, char color, float slen ); void Draw( ); private: float m_SideLength; }; 图形类中的同名覆盖 * 北京邮电大学信息与通信工程学院 -*- 8.3 构造函数和析构函数 8.3 构造函数与析构函数 基类的构造函数和析构函数不能被派生类所继承 派生类一般需要定义自己的构造函数和析构函数 派生类的构造及析构函数通常会受到基类构造及析构函数的影响 * 北京邮电大学信息与通信工程学院 -*- 8.3.1 基类只有无参数构造函数 8.3.1 基类只有无参数的构造函数 在基类具有无参构造函数,派生类又没有定义构造函数的时候,系统会自动的调用基类无参构造函数,来构造
您可能关注的文档
最近下载
- 人教版二年级语文下册描红字帖.xls VIP
- 托福听力1100句[整理].pdf
- _山东省济南市莱芜区2020-2021学年八年级下学期期末数学试卷(五四学制).doc VIP
- 老友记台词剧本第一季第1集中英双语左右对照.pdf
- 中考复习声光热综合复习题.doc
- 遗留矿山生态修复示范性工程 投标方案(技术方案).doc
- SY_T 4216.4-2018 石油天然气建设工程施工质量验收规范油气输送管道穿越工程 第4部分:水域开挖穿越工程.docx
- 党员在“政治生日”感言讲话稿.docx VIP
- Marantz马兰士SR6013产品说明书.pdf
- 中小尺寸oled显示技术概论_level2面板综述逐字稿.pdf
文档评论(0)