C++程序的设计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文档。上传文档
查看更多
单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。 * 抽象工厂模式(Abstact Factory)是一种常见的软件设计模式。该模式为一个产品族提供了统一的创建接口。当需要这个产品族的某一系列的时候,可以从抽象工厂中选出相应的系列创建一个具体的工厂类 * 继承 方法 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 缺省为private 继承 派生类中对基类成员的访问 在派生类中可以使用基类的public 成员 不能使用基类的private 成员 protected成员 开放给派生类 继承方式 private protected public 继承方式决定了派生类的对象和派生类的派生类对基类成员的访问控制 继承 继承方式的调整 在任何继承方式中,除了基类的private成员,都可以在派生类中分别调整其访问控制 基类名::基类成员名 对基类一个重载成员函数名的访问控制的调整,将调整基类所有具有该名的重载函数。 派生类中如果定义了与基类同名的成员函数,则在派生类中不能再对基类中的同名函数进行访问控制调整 class A { public: void f1(); void f2(); }; class B: public A { private: A::f1; }; Ex: 分别利用继承机制定义新类和直接定义新类, 并进行比较 继承 派生类对象的初始化 由基类和派生类共同完成 基类的成员由基类的构造函数初始化 派生类的成员由派生类的构造函数初始化 构造函数的执行次序 1.执行基类的构造函数 2.执行派生类成员对象类的构造函数 3.执行派生类的构造函数 析构函数的执行次序 与构造函数相反 继承 基类构造函数的调用 缺省执行基类默认构造函数 如果要执行基类的非默认构造函数,则必须在派生类构造函数的成员初始化表中指出 class A { int x; public: A() { x = 0; } A(int i) { x = i; } }; class B: public A { int y; public: B() { y = 0; } B(int i) { y = i; } B(int i, int j):A(i) { y = j; } }; B b1; //执行A::A()和B::B() B b2(1); //执行A::A()和B::B(int) B b3(0,1); //执行A::A(int)和B::B(int,int) 虚函数 类型相容 类、类型 类型相容、赋值相容 问题:a、b是什么类型时,a = b 合法? A a; B b; class B: public A 对象的身份发生变化 属于派生类的属性已不存在 B* pb; A* pa = pb; class B: public A B b; A a=b; class B: public A 对象身份没

文档评论(0)

189****6140 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档