预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验题目多态性和虚函数、运算符重载小组合作否○姓名班级 学号一、实验目的: 1、理解静态多态性和动态多态性的含义。 2、掌握一元和二元运算符重载的使用方法。 3、理解重载为重载为成员函数和重载为友元函数的不同。 4、二、实验环境: 安装有vc++6.0程序集成环境的计算机一台 实验内容与步骤: 任务一:有关虚函数和多态—— 任务二: 任务三:“+”运算符重载为类的成员函数: 四、实验过程与分析: 1、在系统能够在运行时,能够根据其类型确定调用哪个重载的成员函数的能力,称为多态性,或叫滞后联编(latebinding),下面我们要看的例程3,就是滞后联编,滞后联编正是解决多态问题的方法。 多态特性的工作依赖虚函数的定义,在需要解决多态问题的重载成员函数前,加上virtual关键字,那么该成员函数就变成了虚函数,从上例代码运行的结果看,系统成功的分辨出了对象的真实类型,成功的调用了各自的重载成员函数。 多态特性让程序员省去了细节的考虑,提高了开发效率,使代码大大的简化,当然虚函数的定义也是有缺陷的,因为多态特性增加了一些数据存储和执行指令的开销,所以能不用多态最好不用。 虚函数的定义要遵循以下重要规则: 1.如果虚函数在基类与派生类中出现,仅仅是名字相同,而形式参数不同,或者是返回类型不同,那么即使加上了virtual关键字,也是不会进行滞后联编的。 2.只有类的成员函数才能说明为虚函数,因为虚函数仅适合用与有继承关系的类对象,所以普通函数不能说明为虚函数。 3.静态成员函数不能是虚函数,因为静态成员函数的特点是不受限制于某个对象。 4.内联(inline)函数不能是虚函数,因为内联函数不能在运行中动态确定位置。即使虚函数在类的内部定义定义,但是在编译的时候系统仍然将它看做是非内联的。 5.构造函数不能是虚函数,因为构造的时候,对象还是一片位定型的空间,只有构造完成后,对象才是具体类的实例。 6.析构函数可以是虚函数,而且通常声名为虚函数。 五、实验总结: 实验中需要注意的问题有: 加法运算符不能实现两个复数的相加,但是用户可定义一个复数类型,并通过重载加法运算符实现两个复数相加。 2、运算符重载的实质就是函数重载。 3、用户不可以自己定义新的运算符,只能对已有的C++运算符进行重载。 4、重载不能改变运算符运算对象(即操作数)的个数。 5、重载不能改变运算符的优先级别和结合性。 6、重载运算符的函数不能有默认参数。 7、重载运算符必须和用户定义的用户自定义类型的对象一起使用,其参数至少有一个是类对象。 8、多态:在面向对象语言中,接口的多种不同的实现方式。也可以这样理解:在运行时,可以基类的指针来调用实现派生类中的方法。简单的一句话:允许将子类类型的指针赋值给父类类型的指针。 9、虚函数:它的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,是C++多态的一种表现 10、C++的多态性表现在它为编程者提供了运算符重载,函数名重载和虚函数等运行机制。运算符重载和函数名重载采用静态联编机制,而虚函数采用动态联编机制。 11、只有类的成员函数才能说明为虚函数,因为虚函数仅适合用与有继承关系的类对象,所以普通函数不能说明为虚函数。 六、指导教师评语及成绩:教室签名成绩批阅日期2011年月日