VC++程序设计 chp11.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文档。上传文档
查看更多
基本概念 雇员类Employee如下: class Employee{ string name; //雇员的名字 Date birthday; //雇员的生日 string dept; //雇员的部门 … //描述雇员的其它信息 }; 对于雇员中的经理,可定义类Manager: class Manager{ Employee emp; //雇员类的对象成员 int level; //经理的级别 … //描述经理的其它信息 }; 基本概念 显然,一个经理同时也是一个雇员,所以在类Manager的数据成员对象emp里保存着Employee数据。 上述表示有何不足? 应该把Manager也是Employee这一事实明确的表示出来,再加上描述Manager的附加信息,即: class Manager : public Employee{ int level; … //描述经理的其它信息 }; 类Manager是由类Employee派生的;换言之,类Employee是类Manager的一个基类,类Manager包含了类Employee的所有成员,再加上它自己的一些成员。这种派生类从基类中继承了各种成员的关系就称为继承。 基本概念 在继承过程中,用已有的类派生出新的类,这种已有的类称为基类或父类;派生出的新类则称为派生类或子类。 基类与派生类之间的关系为: (1)基类是对派生类的抽象,派生类是对基类的具体化。 (2)派生类是基类的组合。多继承可以看作是多个单继承的简单组合。 (3)公有派生类的对象可以作为基类的对象来处理。这与类聚集是不同的,在类聚集中,一个类的对象只能拥有其它类的对象作为其成员对象,但不能作为其它类的对象而使用。 例 11-1 例 11-2 例如: class Base{ public: void Print() const {coutBase::Print()endl;} }; class Derived1 : public Base{ public: void fun(); }; 派生类Derived1从基类Base公有继承。因此,类Derived1是类Base的一个子类型,类Derived1具备类Base中的操作,或者说类Base中的操作可以被用于操作类Derived1的对象。 子类型关系是可以传递的,但是不可逆的。例如继续定义派生类Derived1的派生类Derived2如下: class Derived2 : public Derived1{ … }; 派生类Derived2从派生类Derived1公有继承。因此,类Derived2是类Derived1的一个子类型,同时它也是类Base的一个子类型。子类型关系具有传递性。 反之,类Derived1决不是类Derived2的子类型,类Base也决不是类Derived1或类Derived2的子类型。子类型关系是不可逆的。 公有继承可以实现子类型关系。通过公有继承,派生类得到了基类中除了构造函数、析构函数之外的所有成员,而且可访问成员的访问控制属性也和基类完全相同。这样,派生类对象就可以作为基类的对象使用,但它只能使用从基类继承来的成员。 在C++语言中,子类的对象可以赋值给基类的对象,具有子类型关系的基类和派生类的对象之间满足如下赋值兼容规则: (1)派生类的对象可以赋值给基类的对象,即把派生类对象中从基类继承来的成员,逐个赋值给基类对象的成员。 (2)派生类的对象可以初始化基类的引用。 (3)派生类的对象的地址可以赋值给指向基类的指针。 类型type: 一个类型确定了一组值/对象的范围,以及对值/对象的一组属性和操作。 一个类说明了一个类型;基本类型,如int,char,float等,是内置类型。 子类型subtype: 子类型与超类型supertype: 继承、扩展 子类型继承超类型的属性和操作,且可扩展更多的属性和操作。 具体说,一个派生类是其基类的一个子类型。 从值/对象的范围来看,子类型所确定的值/对象是其超类型的一个子集。 派生类的一个对象也是其基类的一个对象。 子类型关系有传递性,但不可逆。 多继承不仅带来二义性问题,而且带来变量的重复继承问题。 用作用域运算符能区分两个拷贝,但根本问题是避免重复继承。虚基类是一个方法。 * * 继承 派生类和基类之间的一种关系; 新类可以从一个或多个原有类中继承成员函数和数据,并且可以加进新的成员数据和函数,这就是继承; 基类较抽象,而派生类较为具体; 派生类继承基类中定义的特征,而且能扩展新的特征。 子类(派生类):通过继承而建立的类; 父类(基类,超类):被继承的类。

文档评论(0)

好文精选 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档