- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 第5章 继承和派生 公有派生 class ClassName: public BaseClassName 公有派生时,基类中所有成员在派生类中保持各个成员的访问权限。 不可引用 不可引用 私有 不可引用 可以引用 保护 可以引用 可以引用 公有 派生类外 派生类中 基类成员属性 基类:public: 在派生类和类外可以使用 protected: 在派生类中使用 private: 不能在派生类中使用 私有派生 class ClassName: private BaseClassName 私有派生时,基类中公有成员和保护成员在派生类中均变为私有的,在派生类中仍可直接使用这些成员,基类中的私有成员,在派生类中不可直接使用。 不可引用 不可引用 私有 不可引用 可以引用 保护 不可引用 可以引用 公有 派生类外 派生类 基类成员属性 基类:public: (变为私有)在派生类中使用,类外不可使用 protected: (变为私有)在派生类中使用,类外不可使用 private: 不能在派生类中和类外使用 保护派生 class ClassName: protected BaseClassName 保护派生时,基类中公有成员和保护成员在派生类中均变为保护的和私有的,在派生类中仍可直接使用这些成员,基类中的私有成员,在派生类中不可直接使用。 保护派生,派生类中基类公有和保护成员降级使用 不可引用 不可引用 私有 不可引用 可以引用 保护 不可引用 可以引用 公有 派生类外 派生类 基类成员属性 基类:public: (变为保护)在派生类中使用,类外不可使用 protected: (变为私有)在派生类中使用,类外不可使用 private: 不能在派生类中和类外使用 ShowA() Gety() Getx() A( ) z(公有) y(保护) x(私有) A ShowA() Gety() Getx() A( ) z(保护) y(私有) x(私私有) B Sum() Show() B() n(私有) m(私有) protected x在类B新增加的成员中不能直接调用 y在类B中可以调用 z在类B中可以调用 对类B的对象初始化即是对x,y,z,m,n等全部成员的初始化 均为保护类B 外不能引用 protected 成员是一种具有血缘关系内外有别的成员。它对派生类的对象而言,是公开成员,可以访问,对血缘外部而言,与私有成员一样被隐蔽。 抽象类与保护的成员函数 当定义了一个类,这个类只能用作基类来派生出新的类,而不能用这种类来定义对象时,称这种类为抽象类。当对某些特殊的对象要进行很好地封装时,需要定义抽象类。 将类的构造函数或析构函数的访问权限定义为保护的时,这种类为抽象类。 当把类中的构造函数或析构函数说明为私有的时,所定义的类通常是没有任何实用意义的,一般情况下,不能用它来产生对象,也不能用它来产生派生类。 ShowA()(公有) A( )(保护) y(私有) x(私有) A ShowA() A( )(保护) y(私私有) x(私私有) B Show() B() m(私有) public 在类B中不能定义A的对象 在任何时候都不能定义A的对象 但可以在初始化类B的对象时初始化原类A中的成员,因为A()在类B中是可以被调用的。 class A { int x, y; protected: A(int a,int b){x=a;y=b;}//基类初始化 public: void ShowA(){cout x=x\ty=y\n;} }; class B: public A{ int m; A a1; //在派生类中也不可以定义A的对象,实际上还是类外调用 public: B(int a,int b,int c):A(a,b)//可以在派生类中调用A的构造函数 {m=c;} void Show(){ cout“m=m\n; ShowA(); } }; void main(void) { B b1(1,2,3); //可以定义派生类对象 b1.Show(); A aa; //不可定义A的对象 } a1(4,5) 多重继承 可以用多个基类来派生一个类。 A B C D 多重继承是单一继承的扩展 派生类中新定义的成员 格式为: class 类名:Access类名1,..., Access类名n { private: ...... ; //私有成员说明; public: ...... ; //公有成员说明;
您可能关注的文档
最近下载
- 2025.6.27--12、博微配电网工程设计软件使用手册.pdf VIP
- 阿里巴巴集团股权结构分析.doc VIP
- 锡安长老纪要1-24本.pdf VIP
- YYT 0735.1-2009 麻醉和呼吸设备 湿化人体呼吸气体的热湿交换器(HME) 第1部分:用于最小潮气量为250mL的HME.docx VIP
- 汽车仪表盘图标全解.docx VIP
- 阿里巴巴上市后的股权结构(阿里巴巴最新股权结构).doc VIP
- 氧气、乙炔管理制度.docx VIP
- 上海众辰NZ100变频器用户使用说明书调试手册.pdf
- 伴有肺炎的肺脓肿多学科决策模式中国专家共识(2025版).docx VIP
- fwd系列高静压风机盘管机组-特灵空调.pdf VIP
原创力文档


文档评论(0)