- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多态 目 录 多态概述 联编 虚函数 抽象类 模板 运算符重载 本章单词 多态概述 所谓多态性就是不同对象收到相同的消息时,产生不同的动作 C++中的多态性可以分为4类: 参数多态(模板) 重载多态 包含多态(虚函数) 强制多态(自动类型转换) 联编 C++采用联编(Binding)技术来支持多态性 联编实际上是将一个标识符(函数名)和一个存储地址联系在一起的过程 联编种类: 静态联编 动态联编 虚函数 虚函数是一个在基类中通过virtual声明,并在一个或多个派生类中被重新定义的成员函数 声明虚函数的格式如下: virtual返回值类型 函数名(参数表) { 函数体定义; } 虚函数要点 只有在类层次中才可以设计虚函数,只有一个类没有设计虚函数的必要 由于使用虚函数时要利用赋值兼容规则,而赋值兼容规则要求派生类必须为公有继承,因此要求派生类必须由基类的公有继承方式产生 必须使用指针才操作可以达到多态的目的 虚析构函数 只有成员函数才可以声明为虚函数 内联函数不能声明为虚函数 C++中不能声明虚构造函数,但是能够声明虚析构函数 当使用new 创建一个派生类对象,并用基类指针指向他,再使用delete删除基类指针对象时,如果基类的析构函数不是虚函数,则不会调用派生类的析构函数造成内存泄露 抽象类 如果一个类不能够生成对象,则这个是类为抽象类 C++语言中用纯虚函数方法设计抽象类,抽象类一般都是类层次中的基类 如果一个类中存在一个或一个以上的纯虚函数,则称该类为抽象类 纯虚函数是一个在基类中声明的虚函数,它在基类中没有定义,但要求在它的派生类中必须定义自己的版本, ,如果派生类没有实现,则派生类也是一个抽象类 纯虚函数定义原型: virtual 函数原型 = 0; 虚函数原理 设计模式 单例模式 工厂模式 模板模式 单例模式代码 工厂与DAO模式代码 模板模式 课堂作业 使用包含多态与单例,工厂,DAO,模板模式,重新设计借阅系统 模板 模板是一种将数据类型作为参数生成函数和类的机制,是实现现代代码复用的一种机制,也叫参数多态。 模板分为函数模板与类模板 函数模板 函数模板不是函数,不对应可执行的代码,可以定义为一类函数的描述,只有实例化为模板函数后才能执行。 模板函数声明语法 template class|typename T1[,class T2][,…] 模板函数的重载 课堂练习 写一个对数组进行排序的函数模板 类模板 类模板定义的语句格式为 template class T1[,class T2][,…] class 类名 { 类模板体定义 }; 模板类的继承 继承使类的代码得到很大程度的复用。 类模板为类的复用提供了更高层次的通用性,并且通过类模板的继承使这种通用扩大到一个类族,使代码的复用程度得到极大提高 课堂作业 使用模板类实现栈,使之能够容纳不同类型对象 使用模板类实现链表,使之能够容纳不同类型对象 运算符重载 所谓函数(或成员函数)重载,就是允许多个功能类似的函数使用同一个函数名。这样,当一个对象收到两个或两个以上的相同消息时,会因调用函数的参数个数不同或参数类型不同而有不同的操作结果。运算符重载和函数重载的核心思想相同,不同之处是: (1) 对于运算符重载,重载的是运算符。 (2) 即使运算符只在当前程序中定义了一次,也称做运算符重载。这是因为系统中对于所有运算符都已经有过定义,当前程序中定义的运算符只是参数个数或参数类型与系统定义过的运算符不同罢了,所以也称做运算符重载。 (3) 运算符重载必须满足C++语言的规定。 运算符重载规则 (1) 重载的运算符要保持原运算符的意义。如原先单目的运算符只能重载为单目的,不能重载为双目的。 (2) 只能对已有的运算符重载,不能增加新的运算符。 (3) 不是所有运算符都允许重载。 (4) 重载的运算符仍保持原先系统规定的优先级和结合性。例如,若同时重载了+?(加法)和?*?(乘法)运算符,则运算符?*?的优先级仍将高于运算符?+?的优先级,运算符?*?和运算符?+?的结合性与原先的结合性相同。 运算符重载主要有两种形式: 成员函数 友元函数 友元函数形式重载运算符 可以把运算符重载为类的友元函数。例如,可以把双目运算符“+”重载为类的友元函数,此时,对于程序中的表达式 objectX + objectY 当程序编译时,系统内部的表示形式为 operator+(objectX, objectY); 中,objectX为被加数,objectY为加数,它们都是某类已定义的对象。operator+()为运算符?+?的重载。 当把运算符重载为类的友元函数时,因为该函数要使用对象的私有成员变量,所以此时要把外部函数o
文档评论(0)