- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * 多级派生时的访问属性 在多级派生的情况下,各成员的访问属性仍按以上原则确定。 class A //基类 {public: int i; protected: void f2( ); int j; private: int k; }; class B: public A {public: void f3( ); protected: void f4( ); private: int m; }; class C: protected B {public: void f5( ); private: int n; }; ? i f2 j k f3 f4 m f5 n 基类A 公用 保护 保护 私有 ? ? ? ? ? 公用派生类B 公用 保护 保护 不可访问 公用 保护 私有 ? ? 保护派生类C 保护 保护 保护 不可访问 保护 保护 不可访问 公用 私有 继承在软件开发中的重要意义 有了继承,使软件的重用成为可能。继承是C++和C的最重要的区别之一。 许多厂商开发各类实用的类库。用户将它们作为基类去建立适合于自己的类(即派生类),并在此基础上设计自己的应用程序。 继承在软件开发中的重要意义 为什么继承如此重要,在软件开发中要使用继承机制,尽可能地通过继承建立一批新的类?为什么不是将已有的类加以修改,使之满足自己应用的要求呢? 有许多基类是被程序的其他部分或其他程序使用的,这些程序要求保留原有的基类不受破坏。 用户往往得不到基类的源代码。 在类库中,一个基类可能已被指定与用户所需的多种组件建立了某种关系,因此在类库中的基类是不容许修改的。 实际中的许多基类并不是从已有的其他程序中选取来的,而是专门作为基类设计的。 在面向对象程序设计中,需要设计类的层次结构,从最初的抽象类出发,每一层派生类的建立都逐步地向着目标的具体实现前进。 继承时的构造函数 基类的构造函数不被继承,派生类中需要声明自己的构造函数。 声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化,自动调用基类构造函数完成。 派生类的构造函数需要给基类的构造函数传递参数 派生类的构造、析构函数 单一继承时的构造函数 派生类的构造、析构函数 派生类名::派生类名(总参数表列):基类名(参数表) { 本类成员初始化赋值语句; } 基类所需的形参,本类成员所需的形参 例 单一继承时的构造函数 class B { public: B(); B(int i); ~B(); void Print(); private: int b; }; B::B() { b=0; cout“B默认构造endl; } B::B(int i) { b=i; cout“B构造函数 endl; } B::~B() { cout“B析构函数endl; } void B::Print() { coutbendl; } * class C:public B { public: C(); C(int i,int j); ~C(); void Print(); private: int c; }; C::C() { c=0; cout“C默认构造.endl; } C::C(int i,int j):B(i) { c=j; cout“C构造函数endl; } C::~C() { cout“C析构函数endl; } void C::Print() { B::Print(); coutcendl; } int main() { C obj(5,6); obj.Print(); } 运行结果: B构造函数 C构造函数 5 6 C析构函数 B析构函数 派生类与基类的构造函数 当基类中声明有默认形式的构造函数时,派生类构造函数可以不向基类构造函数传递参数。 若基类中未声明构造函数,派生类中也可以不声明,全采用缺省形式构造函数。 当基类声明有带形参的构造函数时,派生类也应声明带形参的构造函数,并将参数传递给基类构造函数。 派生类的构造、析构函数 有子对象的派生类的构造函数 类的数据成员中还可以包含类对象,即类对象中的内嵌对象,称为子对象(subobject),即对象中的对象。 #include io
您可能关注的文档
最近下载
- DIN 9830 冲压件切割毛边高度.pdf VIP
- 2024-2025学年广东省深圳市红岭中学九年级上学期开学考数学试题及答案.pdf VIP
- 2020秋部编人教版语文二年级上册全册课件.pptx VIP
- 古建筑传统瓦工(砧刻工砌花街工泥塑工古建瓦工)施工机械用电管理详细措施.docx VIP
- (高清版)DB51∕T 2997-2023 四川省水文数据通信传输指南 .pdf VIP
- 二升三年级数学暑假作业完整版25天.pdf VIP
- 统编《世界历史》九年级上册教材分析与建议.doc VIP
- 沪教牛津版八年级英语上册词汇表.docx VIP
- 2025年全国翻译专业资格(水平)考试西班牙语二级口译试卷.docx VIP
- GB∕T 5796.1-2022 梯形螺纹 第1部分:牙型.pdf
文档评论(0)