浅析程序设计实习.pptVIP

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序设计实习2010 程序设计实习 第十四讲 继承 内容提要 基本概念:继承、基类、派生类 派生类的成员组成、可见性 派生类的构造、析构 派生类与基类的指针类型转换 需要继承机制的例子: class Circle { public: Circle( double r = 0.0, int x = 0, int y = 0 ); ~Circle(); private: Point Center; double radius; }; Circle::Circle( double r, int a, int b ): Center( a, b ) { radius = r; } Circle::~Circle() { } 另一种存取权限说明符:protected 基类的private成员:可以被下列函数访问 基类的成员函数 基类的友员函数 基类的public成员:可以被下列函数访问 基类的成员函数 基类的友员函数 派生类的成员函数 派生类的友员函数 其他的函数 基类的protected成员:可以被下列函数访问 基类的成员函数 基类的友员函数 派生类的成员函数 派生类的友员函数 class Father { private: int nPrivate; //私有成员 public: int nPublic; //公有成员 protected: int nProtected; // 保护成员 }; class Son :public Father{ void AccessFather () { nPublic = 1; // ok; nPrivate = 1; // wrong nProtected = 1; // OK,访问从基类继承的protected成员 Father f; f.nProtected = 1; //ok ,访问基类对象的protected成员 } } 在创建派生类的对象时,需要调用基类的构造函数:初始化派生类对象中从基类继承的成员。在执行一个派生类的构造函数之前,总是先执行基类的构造函数 调用基类构造函数的两种方式 显式方式:在派生类的构造函数中,为基类的构造函数提供参数 derived::derived(arg_derived-list):base(arg_base-list) 隐式方式:在派生类的构造函数中,省略基类构造函数时,派生类的构造函数则自动调用基类的默认构造函数 派生类的析构函数被执行时,执行完派生类的析构函数后,自动调用基类的析构函数 在创建派生类的对象时,在执行一个派生类的构造函数之前 调用基类的构造函数:初始化派生类对象中从基类继承的成员 调用成员对象类的构造函数:初始化派生类对象中成员对象 派生类的析构函数被执行时,执行完派生类的析构函数后, 调用成员对象类的析构函数 调用基类的析构函数 public继承的赋值兼容规则 派生类的对象可以赋值给基类对象 b = d; 派生类对象可以初始化基类引用 base br = d; 派生类对象的地址可以赋值给基类指针 base * pb = d; 如果派生方式是 private或protected,则上述三条不可行 基类与派生类的指针强制转换 派生类对象的指针可以直接赋值给基类指针 ptrBase = objDerived; ptrBase指向的是一个Derived类的对象 *ptrBase可以看作一个Base类的对象,访问它的public成员 直接通过ptrBase,不能够访问objDerived由Derived类扩展的成员 通过强制指针类型转换,可以把ptrBase转换成Derived类的指针 ptrBase = objDerived; ptrDerived = (Derived * ) ptrBase; 程序员要保证ptrBase指向的是一个Derived类的对象,否则会出错 直接基类与间接基类 类A派生类B,类B可再派生类C,类C派生类D,…… 类A是类B的直接基类 类B是类C的直接基类,类A是类C的间接基类 类C是类D的直接基类,类A、B是类D的间接基类 在声明派生类时,派生类的首部只需要列出它的直接基类 派生类的首部不要列出它的间接基类 派生类沿着类的层次自动向上继承它的间接基类 派生类的成员包括 派生类自己定义的成员 直接基类中定义的成员 间接基类的全部成员 多继承 一个类可以从多个基类派生而来,以继承多个基类的成员。这种派生称作“多重继承” class derived:access-specifier1

文档评论(0)

aa15090828118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档