- 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多态性复要点
多态性和操作符重载
知识要点
1
2.面向对象的多态性可以分为4类:重载多态、强制多态、包含多态和参数多态。
3.多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。
4.运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据导致不同类型的行为。
5.运算符重载的规则如下:
1)C++语言中的运算符除了少数几个之外,全部可以重载,而且只能重载C++语言中已有的运算符。
2)重载之后运算符的优先级和结合性都不会改变。
3)运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造。一般来讲,重载的功能应当与原有功能相类似,不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型。
5个,它们是类属关系运算符“.”、成员指针运算符“*”、作用域分辨符“::”、sizeof运算符和三目运算符“?:”。前面两个运算符保证了C++语言中访问成员功能的含义不被改变。作用域分辨符和sizeof运算符的操作数是类型,而不是普通的表达式,也不具备重载的特征。
6:
函数类型 operater 运算符(形参表)
{ }
运算符重载为类的友元函数的一般语法形式为:
friend 函数类型 operater 运算符(形参表)
{ }
7.虚函数
????virtual?函数返回类型说明符?函数名(参数表) ????在定义虚函数时要注意: ????(1) 虚函数是非静态的、非内联的成员函数,而不能是友元函数,但虚函数可以在另一个类中被声明为友元函数。 ????(2) 虚函数声明只能出现在类定义的函数原型声明中,而不能在成员函数的函数体实现的时候声明。 ????(3) 一个虚函数无论被公有继承多少次,它仍然保持其虚函数的特性。 ????(4) 若类中一个成员函数被说明为虚函数,则该成员函数在派生类中可能有不同的实现。当使用该成员函数操作指针或引用所标识的对象时,对该成员函数调用可采用动态联编。 ????(5) 定义了虚函数后,程序中声明的指向基类的指针就可以指向其派生类。在执行过程中,该函数可以不断改变它所指向的对象,调用不同版本的成员函数,而且这些动作都是在运行时动态实现的。虚函数充分体现了面向对象程序设计的动态多态性。
8.虚析构函数 virtual进行说明,则该析构函数就称为虚析构函数。虚析构函数的说明格式如下: ????virtual?~() ????在使用虚析构函数时要注意以下几点: ????(1) 只要基类的析构函数被声明为虚函数,则派生类的析构函数,无论是否使用virtual关键字进行声明,都自动成为虚函数。 (2) 如果基类的析构函数为虚函数,则当派生类未定义析构函数时,编译器所生成的析构函数也为虚函数; ????(3) 当使用delete运算符删除一个对象时,隐含着对析构函数的一次调用,如果析构函数为虚函数,则这个调用采用动态联编。动态联编可以保证析构函数被正确执行。 (4) 子类型化要求析构函数应被声明为虚函数,特别是在析构函数完成一些有意义的工作时。因此,当不能决定是否应将析构函数声明为虚函数时,就将析构函数声明为虚函数。
9.纯虚函数 ????纯虚函数的作用是为派生类提供一个一致的接口。 ????纯虚函数的声明格式如下: ????virtual?函数返回类型说明符?函数名(参数表)=0;
10.抽象类 ????(1) 抽象类只能作为基类使用,其纯虚函数的实现由派生类给出;但派生类仍可不给出纯虚函数的定义,继续作为抽象类存在。 ????(2) 抽象类不能定义对象,一般将该类的构造函数说明为保护的访问控制权限。 ????(3) 可以声明一个抽象类的指针和引用。通过指针和引用,可以指向并访问派生类对象,进而访问派生类的成员,这种访问是具有多态特征的。
2 典型例题分析与解答
1: 指出下列对定义重载函数的要求中,哪些是错误的提法。
A.???? 要求参数的个数不同。 B.要求参数中至少有一个类型不同。
C.???? 求函数的返回值不同。 D. 要求参数的个数相同时,参数类型不同。
答案:A C
分析:将函数体与函数调用相联系称为捆绑或约束,与多态性称之为静态联编。因为静态联编的函数调用是在编译阶段就确定了的,所以对重载的要求就是在编译阶段能够产生唯一的内部标识符号,以使编译器能够根据这个标识符号来确定到底要调用哪个函数。不必要求参数个数相同,但是如果参数个数相同时,参数类型一定不能全部相同。这也是选项B表达的意思,为什么可以通过参数来重载,而不能通过返回值来重载?这是因为在调用一个函数时会忽略它的返回值,所以不能通过返回值来重载。
例题2:下列运算符中,( )运算符在C++中不能重载。
A.?: B.[
原创力文档


文档评论(0)