12.继承和派生解读.ppt

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

class CTeacher :virtual public CPerson { public: CTeacher(char *name, int age, char sex = M) :CPerson(name, age, sex) // 调用基类构造函数进行初始化 {} void SetData( char *title, char *part, int years ) { strncpy(this-title, title, 20); strncpy(this-part, part, 20); this-workyears = years; } void ShowInfo() { cout职称:titleendl; cout部门:partendl; cout工龄:workyearsendl; } private: char title[20]; // 职称 char part[20]; // 部门 int workyears; // 工龄 }; class CAssistant : public CTeacher, public CStudent { public: CAssistant(char *tname, int tage, char tsex, char *name, int age, char sex = M) :CTeacher(name, age, sex), CStudent(name, age, sex), tutor( tname, tage, tsex ) {} void SetData( char *duty, char *title, char *part, int years ) { strncpy(this-duty, duty, 20); tutor.SetData( title, part, years ); } void ShowInfo() { cout导师信息:endl; tutor.ShowInfo(); cout职责:dutyendl; } private: CTeacher tutor; char duty[20]; // 职责 }; int main() { CAssistant one( DING, 38, M, WANG, 19 ); one.SetData( 批改作业, 教授, 机电学院, 15 ); one.CStudent::SetData( 机电班, 210101, 80, 90, 80 ); one.CTeacher::SetData( 助课, 机电学院, 2 ); one.CTeacher::ShowInfo(); one.CStudent::ShowInfo(); one.ShowInfo(); return 0; } 程序运行结果如下: 小结 继承 概念 方式:公有(public)、私有(private)、保护(protected) 派生类 定义 初始化 二义性问题 赋值兼容 类间关系 * * * 例:多继承 class A { public: A() {cout执行A的构造函数endl;} ~A() {cout执行A的析构函数endl;} }; class B { public: B() {cout执行B的构造函数endl;} ~B() {cout执行B的析构函数endl;} }; class C: public B, public A { public: C() {cout执行C的构造函数endl;} ~C() {cout执行C的析构函数endl;} }; int main() { C c; return 0; } 12.3.2 派生类数据成员初始化 派生类中的各数据成员的初始化次序总体是:首先是基类拷贝成员的初始化,然后才是派生类自己的数据成员初始化。 基类拷贝成员的初始化次序,在单继承中取决于继承层次的次序,在多继承中取决于派生类声明中指定继承时的先后次序。 派生类自身数据成员的初始化次序取决于派生类中声明的先后次序。 派生类名(形参表): 基类1(参数表), 基类2(参数表), …, 基类n(参数表), 对象成员1(参数表), 对象成员2(参数表), …, 对象成员n(参数表) { } 成员初始化列表 例: 一个长方体类CCuboid,它从基类矩形类CRect派生而来。?基类CRect的数据成员是两个CPoint类对象ptLT和ptRB,分别表示矩形的左上角点和右下角点的位置。派生类CCuboid自身的数据成员有表示高度的fHeight,表示底面中点

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档