C%2B%2B程序设计part2.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多继承 基类的声明次序决定: 对基类构造函数/析构函数的调用次序 对基类数据成员的存储安排 名冲突 基类名::基类成员名 虚基类 如果直接基类有公共的基类,则,该公共基类中的成员变量在多继承的派生类中有多个副本 D A B C class A { int x; … }; class B: A; class C: A; class D: B, C; 多继承 类D拥有两个x成员:B::x和C::x 虚基类 合并 class A; class B: virtual A; class C: virtual A; class D: B, C; 注意: 虚基类的构造函数由最新派生出的类的构造函数调用 虚基类的构造函数优先非虚基类的构造函数执行 * 单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。 * 抽象工厂模式(Abstact Factory)是一种常见的软件设计模式。该模式为一个产品族提供了统一的创建接口。当需要这个产品族的某一系列的时候,可以从抽象工厂中选出相应的系列创建一个具体的工厂类 * 原则 避免将data member放在公开接口中 努力让接口完满 (complete) 且最小化 class AccessLevels { public: int getReadOnly const { return readOnly; } void setReadWrite(int value) { readWrite = value; } int getReadWrite() { return readWrite; } void setWriteOnly(int value) { writeOnly = value; } private: int noAccess; int readOnly; int readWrite; int writeOnly; }; 继承 继承的提出 软件复用 理想的软件复用(硬件的复用) 技术和资源限制 直接使用往往不可能 功能差别性 解决方案 修改源代码? 继承 继承机制 软件复用 无需修改已有软件 部分重用 基于目标代码的代码复用机制 对事物进行分类 派生类是基类的具体化 把事物(概念)以层次结构表示出来,有利于描述和解决问题 继承 支持软件的增量开发 派生类是基类的延续 对概念进行组合(多继承) 图形 闭合图形 非闭合图形 直线 折线 弧线 多边形 椭圆形 矩形 三角形 圆形 研究生 教师 在职研究生 继承 基类与派生类(父类与子类) A是基类,B是派生类 class A //基类 { int x,y; public: f(); g(); }; 数据 派生类对象拥有基类对象的所有成员 新的成员 class B: public A //派生类 { int z; public: h(); }; 继承 方法 class B: public A { int z; public: h(); f(); }; … b.f(); //B中的 f class A //基类 { int x,y; public: f(); g(); }; 继承 新方法 不同名 同名 b.A::f(); //A中的 f class B: public A { … public: h() { f(1); A::f(); } f(int); }; 重定义方法 虚函数 B b; b.f(1); //Ok b.f(); //Error b.A::f(); //Ok 继承 类的使用者 实例用户 派生类用户 一般与特殊 is_a 子类是基类的特化 整体与部分 is a part of 聚集 类A作为类B的成员对象类 继承 继承的种类 单继承 多继承 单继承 定义 class 派生类名:[继承方式] 基类名 { 〈成员表〉}; 继承方式 public、private和protected

文档评论(0)

187****5045 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档