2016年11月5号第次课3继承和多态-2.pptxVIP

  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文档。上传文档
查看更多
回顾 继承和派生的基本概念 继承定义 派生类重定义基类函数 继承关系中构造函数、析构函数之间的关系 1 目标 基类和派生类对象的转换 类指针的使用 多重继承 复合与继承的关系 虚基类概念 虚基类构造函数 虚继承 2 静态成员与继承 基类的静态成员没有所谓的继承 基类和其派生类共同拥有静态成员 静态成员的存取能通过基类、派生类 基类::静态数据成员 基类::静态成员变量(参数表) 派生类::静态数据成员 派生类::静态成员变量(参数表) 3 friend与继承(暂不要求) 基类的friend类/函数在继承后不能存取派生类的成员,但是可以存取派生类对象中基类部分的成员. 4 类指针 类名也可以用来声明指针 类的指针可以操作类的对象,也可以操作派生类的对象(派生类对象也是基类对象) 派生类对象和基类对象可以通过指针统一操作和管理 5 类指针的使用 类指针操作类对象的几种可能 基类指针操作基类对象(自然) 派生类指针操作派生类对象(自然) 基类指针操作派生类对象——把派生类对象作为基类对象看(安全) 派生类指针操作基类对象——把基类对象作为派生类对象看(危险) 6 派生类对象基类对象的转换(不必纠结下面的说明) 当派生类以Public方式继承基类时,编译器可自动执行的转换(向上转型 upcasting 安全转换) 派生类对象自动转换为基类对象(特有的成员消失) 派生类对象指针自动转化为基类对象指针 派生类对象引用自动转化为基类对象引用 当派生类以private/protected方式继承基类时 派生类对象指针(引用)转化为基类对象指针(引用)需用强制类型转化 (基类)派生类对象 (基类*)派生类对象指针 不能把派生类对象强制转换为基类对象 7 基类对象派生类对象的转换(不必纠结下面的说明) 基类对象指针(引用)可用强制类型转换为派生类对象指针(引用), 而基类对象无法执行这类转换. 向下转型不安全,没有自动转换的机制 可以使用static_cast运算符进行强制类型转换,但仅限派生类以public方式继承基类(指针和引用). 8 继承中的类型转换6-1 //文件people.h #if !defined __PEOPLE__H__ #define __PEOPLE__H__ class People { public: People(char *str, int s); //构造函数中参数s大于0表示男性,否则为女性 ~People(); int getSex(); char* getName(); private: char *name; int sex; }; #endif 9 继承中的类型转换6-2 //文件people.cpp #include string.h #include iostream.h #include people.h People::People(char *str, int s){ name = new char[strlen(str)+1]; strcpy(name, str); if (s0) sex = 1; //男性 else sex = 0; //女性 } People::~People(){ delete []name; } int People::getSex(){ return sex; } char * People::getName(){ static char str[128]; strcpy(str,name); return str; } 10 继承中的类型转换6-3 //文件teacher.h #include people.h #if !defined TEACHER_H #define TEACHER_H class Teacher : public People { public: Teacher(char *str, int s, char *sch, int y); ~Teacher(); int getWorkYears(); char *getSchool(); private: char *school; int years; }; #endif 11 继承中的类型转换6-4 #include string.h //文件 teacher.cpp #include iostream.h #include teacher.h Teacher::Teacher(char *str,int s, char *sch,int y):People(str, s) { //调用基类的构造函数 school = new

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档