- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 继承与派生 第3章 继承与派生 3.1 继承与派生 3.1.1 继承的概念 3.1.2 派生类实现 3.1.2 派生类实现 3.1.2 派生类实现 3.1.2 派生类实现 3.1.3 继承与组合 3.2 继承的方式 3.2.1 公有继承 3.2.1 公有继承 3.2.1 公有继承 3.2.1 公有继承 为什么共有派生后无法访问基类的私有数据了? #include iostream using namespace std; class CShape { public : void setcolor(int color) { m_color = color; } void display() { coutShapem_colorendl; } private : int m_color; }; class CRect : public CShape { public : void display() { coutRectm_colorendl;//错误在这里 } }; void main() { CRect cs; cs.setcolor( 0 ); cs.display(); } 错误 1 error C2248: CShape::m_color : cannot access private member declared in class CShape d:\c++\main\main.cpp 23 3.2.2 私有继承 3.2.2 私有继承 3.2.2 私有继承 3.2.3 保护继承 3.2.3 保护继承 3.2.3 保护继承 3.2.3 保护继承 3.2.3 保护继承 3.2.3 保护继承 3.2.4对象组合 组合概念体现的是一种包含与被包含的关系,在语义上表现为“is part of”的关系,即在逻辑上A是B的一部分 。 在C++程序设计中,类的组合用来描述一类复杂的对象,在类的定义中,它的某些属性,往往是另一个类的对象,而不是像整型、浮点型之类的简单数据类型,也就是“一个类内嵌其它类的对象作为成员”,将对象嵌入到类中的这样一种描述复杂类的方法,我们称之为“类的组合”,一个含有其他类对象的类称为组合类,组合类的对象称为组合对象。 3.2.5成员初始化列表与特殊成员的初始化 1. 对象成员的缺省构造 如果一个类含有其它类的对象为成员,在生成类对象时,系统会调用成员对象类的无参构造函数来构造成员对象。 2. 构造函数的成员初始化列表 构造函数的简单参数可以被直接列在函数声明之后,函数体之前,称为构造函数的成员初始化列表,形式为: 类名(行参说明表):成员初始化列表; 3、派生类构造函数 构造函数不能够继承,因此派生类的构造函数必须通过调用基类的构造函数来初始化对像,所以在派生类的构造函数中除了要完成对自身的数据成员的初始化外,还必须调用基类构造函数使基类的成员初始化。 派生类的成员是由基类中说明的成员和派生类中说明的成员共同构成。在c++语言中,将派生类的对象中由基类说明的成员相对独立成一个基类子对象,它由基类的构造函数初始化。 派生类名 (派生构造函数参数列表):基类构造函数(基类构造函数参数列表1), 子对象名(组合对象)(基类构造函数参数列表2) { 派生类成员初始化 } 4. 特殊成员采用成员初始化列表进行初始化 一个类可以包含其它类对象成员、const成员和引用成员,称它们为特殊成员是因为其处理上的特殊性 const成员、引用成员和只能调用有参数构造函数的对象成员都必须采用成员初始化列表实现初始化,否则无法建立这些特殊成员。 成员初始化列表中的初始化项目次序总是按先对象、后简单成员的顺序进行,且同类的成员按其在定义中的顺序处理。 4. 常量数据成员 类中定义的常量成员包括const和enum两类,它们不占用对象的存储空间。 8.4派生类的构造与析构 8.4派生类的构造与析构 8.4 派生类的构造与析构 3.4 派生类的构造与析构 3.5 类型兼容 8.4 类型兼容 3.5 类型兼容 3.6 多继承 3.6.2 二义性问题 3.6.2 二义性问题 3.6.2 二义性问题 3.7 虚基类(P73) 3.7 虚基类 3.7 虚基类 3.7.1 虚基类的定义 3.7.1 虚基类的定义 3.7.2 虚基类的构造与析构 3.7.2 虚基类的构造与析构 3.7.2 虚基类的构造与析构 3.7.2 虚基类的构造与析构 3.7.2 虚基类的构造与析构 3.7.2 虚基类的构造与析构 3.8 本章小结 上机 1、原型:extern void exit(int retval); 用
文档评论(0)