- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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,表示底面中点
您可能关注的文档
最近下载
- PICC护士进修汇报心得ppt.pptx
- 一次性使用止血套环产品技术要求北京中诺恒康生物科技.docx
- Q/GDW 13238.3—2018 10kV电力电缆采购标准(第3部分:10kV三芯电力电缆-专用技术规范).pdf
- 佛山事业单位真题2023.docx VIP
- 〖地理〗亚洲及欧洲——河流课件-2024-2025学年七年级地理下学期(湘教版2024).pptx VIP
- 水文地质学基础,课件(15章全,共400页).ppt
- 绿城企业文化系列读本绿城管理者论.doc
- 2025年轻人文娱消费趋势图鉴.docx VIP
- GBT17395-2008无缝钢管尺寸外形重量及允许偏差.pdf VIP
- 右正中神经电刺激早期干预对颅脑损伤昏迷患者的临床疗效观察.pdf VIP
文档评论(0)