- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
windows复习重点
1.1 重载
重载分为两大类:函数重载和运算符重载。
1.1.1 函数重载和默认参数
C++允许为同一个函数定义几个版本,这称为函数重载。
函数重载使一个函数名具有多种功能,即具有“多种形态”,所以又称这种形态为多态性。
从函数原型可见,它们的区别一是参数类型不同,二是参数个数不同。编译器在编译时,能根据源代码调用固定的函数标识符,然后由连接器接管这些标识符,并用物理地址代替它们,这就称为静态联编或先期联编。
C++的运算符大部分都可以重载,不能重载的只有“. ”、“::”、“*”和“? :”。前面3个是因为在C++中有特定的含义,不准重载可以避免不必要的麻烦;“? :”则是因为不值得重载。另外,“sizeof”和“#”不是运算符,因而不能重载,而= 、()、[]、-这4个运算符只能用类运算符来重载。
1.3.3 虚函数的定义
为实现某种功能而假设的函数称作虚函数。虚函数是实现多态性的基础。一旦基类定义了虚函数,该基类的派生类中的同名函数也自动成为虚函数。
class A {
public:
virtual void fun( ); //声明虚函数
};
void A::fun( ) { ......// } //定义虚函数
虚函数只能是类中的一个成员函数,但不能是静态成员,关键字virtual用于类中该函数的声明中。当在派生类中定义了一个同名的成员函数时,只要该成员函数的参数个数和相应类型以及它的返回类型与基类中同名的虚函数完全一样(例如void area(void) 函数),则无论是否为该成员函数使用 virtual,它都将成为一个虚函数。
1.3.6 纯虚函数与抽象类
在许多情况下,在基类中不能为虚函数给出一个有意义的定义,这时可以将它说明为纯虚函数。它的定义留给派生类来做。说明纯虚函数的一般形式为:
class 类名 {
virtual 函数类型 函数名(参数列表)=0;
};
点没有面积,可以说明为:
virtual double area( )=0;
一个类可以说明多个纯虚函数,包含有纯虚函数的类称为抽象类。一个抽象类只能作为基类来派生新类,不能说明抽象类的对象。例如,将Point类的area( )函数声明为纯虚函数,则
Point a(1.5,6.7); //错误
就是错误的。但可以说明指向抽象类对象的指针(或引用),例如:
Point *pa;
1.4.1 函数指针
函数在内存中有确定的物理地址,该地址能够赋给指针。这是因为函数在编译时,它的源代码转换成了目标代码,同时确定了函数的入口地址。程序调用函数,也就是指向了这个入口地址。因而,指向函数的指针实际上包含了函数的入口地址,所以赋给指针的地址就是函数的入口地址,从而该指针就用来代替函数名。这就使得函数可以作为实参传递给其他函数,从而可将一个指向函数的指针传递给函数,或放置在数组中提供给其他对象使用。
1. 函数指针定义
函数指针定义形式如下:
数据类型标识符 (*指针对象名)(函数参数的数据类型列表);
例如语句“int (*p)(int,int );”仅仅说明定义的p是一个指向函数的指针,此函数返回整型值。p并不是固定指向哪一个函数的,而只是表示定义了这样一个类型的对象,专门用来存放函数的入口地址。在程序中把哪一个函数的地址赋给它,它就指向哪一个函数。在一个程序中,一个函数指针对象可以先后指向不同的函数。从这一点上看,它跟过去介绍的指针对象具有相同的性质。声明函数指针时,只需要给出函数参数的数据类型,不需要给出参数名。如果给出也可以,只不过编译系统不理睬参数名而已,所以下面两种形式是等效的:
int( *p )(int ,int ); //只给参数类型
int( *p )(int a,int b ); //给出参数类型和参数名
也可以使用typedef定义,例如:
typedef int (*FUN) (int a, int b);
FUN p;
则对象p为一个指向原型为 int (int, int) 的函数的指针。
2. 函数指针对象赋值
给函数指针对象赋值时,只需要给出函数名而不必给出参数。因为语句
p=函数名;
是将函数入口地址赋给指针对象p,而不涉及到实参与形参的结合问题。
数组名代表数组起始地址,这里的函数名则代表函数的入口地址。因为在C++中,单独一个函数名(其后不跟一对圆括号)被自动地转换为指向该函数的指针(函数的第1条指令的地址)。当函数地址被置入一个指针对象中时,可以通过该指针对象调用该函数。这里的p就是指向该函数的指针对象,它和函数名都指向函数的开头,调用p就是调用这个函数
您可能关注的文档
- VBScript与JScript实例教程.doc
- VB共享软件防破解设计技术初探(一).doc
- vbNET集成环境的程序设计.doc
- vb期末考试VB题.doc
- VB理论复习题.doc
- VB期末考试题库终极版(绝对全).doc
- VC++6.0上机指导C语言实验讲义.doc
- vc++6.0调试详细教程(17种方法).doc
- VC++语言程序设计实验大纲(软件学院).doc
- VC11+校验器操作指南.doc
- 《小学毕业考试动员》主题班会.pptx
- 第九章 第4课时 电容器 实验十:观察电容器的充、放电现象 带电粒子在电场中的直线运动.pptx
- 2025高考物理大一轮复习讲义人教版PPT课件牛顿第二定律的基本应用.pptx
- 第二章 第3课时 牛顿第三定律 共点力的平衡.pptx
- 2025高考物理大一轮复习讲义人教版PPT课件功、功率 机车启动问题.pptx
- 2024秋下学期西安电子科技大学《人力资源管理》期末在线考核.docx
- 小学五年级数学下册教学课件《约分》.pptx
- 辽宁省2024年中考语文试卷(附答案解析).docx
- 初一期中家长会PPT.pptx
- 全国消防安全日-全民消防生命至上主题宣传.pptx
文档评论(0)