C 电语言基础教程.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文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 定义为虚基类后也可以避免二义性。当定义虚基类后,A,B1,B2和C类之间的关系如下: A →{a} ← ↑ ↑ B1 B2 {b1} {b2} ↑ ↑ ← C→ {f( )} (2) 具有虚基类的派生类的构造函数 具有虚基类的派生类(如上例C类)的构造函数中不仅包含两个直接基类的构造函数,另外还包含虚基类A的构造函数,并且规定虚基类A的构造函数优先调用,只调用一次,在B1类和B2类的构造函数中不再调用A类的构造函数。 参见[例7.10]。 第8章 多态性和虚函数 8. 1 函数重载 先解释一下多态性,一个函数名对应多种状态,即多种实现,像这样一对多的情况称为多态性。 C++语言多态性表现在以下3个方面。 ① 函数重载 ② 运算符重载 ③ 动态联编 函数重载 相同函数对应着若干种不同实现,定义重载函数时要求在参数的个数或类型或顺序上有所不同,以便选择。在函数调用时根据参数的不同选择不同的实现。 参见[例8.1]。 8. 2 运算符重载 (1) 什么是运算符重载 系统对已有的运算符已定义其功能,用户还可以重新定义它的新功能,这就是运算符重载。运算符重载实际上是函数重载,因为新功能的定义书写在函数体内。同一个运算符的不同功能的选取由操作数的类型决定的。 (2) 哪些运算符可以重载 除了下列4种运算符外,其余运算符都可以重载。不能重载的运算符是: *,·*,∷,?: (3) 运算符重载有4个不变 ① 优先级不变 ② 结合性不变 ③ 操作数个数不变 ④ 语法语义不变 (4) 运算符重载遵循的原则 ① 重载运算符的含义清楚,并且有实际意义 ② 重载运算符不能有二义性 (5) 运算符重载的两种形式 考虑到运算符重载后能够对类中的所有成员(包含私有成员)都能进行操作,因此运算符重载的形式有两种:一是成员函数形式,二是友元函数形式。 ① 重载为类的成员函数 具体格式如下: 〈类型〉operator〈运算符〉(〈参数表〉) 参见[例8. 2]。 ② 重载为友元函数 具体格式如下: friend 〈类型〉operator〈运算符〉(〈参数表〉) 参见[例8. 3]。 比较两种形式的不同点。 (6) 运算符重载举例 ① 下标运算符 参见[例8. 5]。 ② 函数调用运算符 参见[例8. 7]。 8. 3 静态联编和动态联编 1. 什么是联编 联编是将被调用的函数连接编译到调用它的程序中。 联编有两种:一种是静态联编,另一种是动态联编。 静态联编是在编译阶段进行联编的,又称早期联编。 动态联编是在运行阶段进行联编的,又称晚期联编。 通常都是静态联编,只有满足一定条件时才会实现动态联编。 2. 动态联编的条件 (1) 公有继承是基础 (2) 虚函数是关键 (3) 对象指针或引用作为引导 8. 4 虚函数 虚函数是一种非静态的成员函数,说明虚函数的方法如下: virtual 〈类型〉〈函数名〉(〈参数表〉) 虚函数具有如下特征: ① 虚函数是在基类和派生类中说明相同而实现不同的成员函数 ② 基类中说明的虚函数具有下传给派生类的性质 ③ 构造函数不能说明为虚函数,而析构函数可以说明为虚函数 参见[例8. 8]、[例8. 9]、[例8. 10]、[例8. 11]、[例8. 13]。 8. 5 纯虚函数和抽象类 1. 纯虚函数 纯虚函数是一种没有具体实现的特殊的虚函数。 纯虚函数的定义格式如下: virtual 〈类型〉〈函数名〉(〈参数表〉)=0; 一个基类内有一个纯虚函数时,则在它的派生类中至少有一个虚函数,否则纯虚函数是无意义的。 2. 抽象类 含有纯虚函数的类称为抽象类,与此相对应的不含有纯虚函数的类称为具体类。 抽象类的特点是不能定义对象,只可定义对象指针和对象引用。 抽象类的主要作用是为其所组织的继承层次结构中提供一个公共的根,纯虚函数的实现由其具体的派生类来提供。 参见[例8. 17]。 从例[例8. 17]中可以体会到面向对象程序设计的层次结构的特点,这为程序扩展和用户编程提供方便。 8. 6 虚析构函数 1. 虚析构函数的说明方法 在虚析构函数前面加上关键字virtual,则该析构函数被说明为虚析构函数。 如果一个基类的析构函数被说明为虚函

文档评论(0)

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

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

1亿VIP精品文档

相关文档