多态程序设计.doc_第1页
多态程序设计.doc_第2页
多态程序设计.doc_第3页
多态程序设计.doc_第4页
多态程序设计.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验五 多态程序设计一、 实验目的:理解运算符重载的概念和实质,掌握运算符重载函数的定义方法,掌握运算符重载为类的成员函数和友元函数的方法。掌握虚函数的定义方法及其在实现多态性中的应用,理解静态连编和动态链编的区别。二、 实验时间:2019/12/27三、 实验地点:四、 实验内容:1已知基类:class Base public : virtual void I_am()cout”Base”endl; 要求:(1)从Base类中派生出两个类,分别定义I_am()函数,实现输出自己类的名字。(2)主函数中创建者3个类的对象来调用I_am()函数,再利用Base的指针数组通过循环语句来调用这3个对象的I_am()函数。/ 1.cpp : 定义控制台应用程序的入口点。/#include stdafx.h#include#includeusing namespace std;class basepublic:base()virtual void i_am()couti am baseendl;class base_x:public basepublic:base_x()void i_am()couti am base_xendl;class base_y:public basepublic:base_y()void i_am()couti am base_yendl;int main() base b; base_x b_x; base_y b_y; base *a3=&b,&b_x,&b_y; for(int i=0;ii_am();return 0; 2. 编写程序,计算圆柱体,球体,正方体的表面积和体积。要求用抽象类实现。/ 2.cpp : 定义控制台应用程序的入口点。/#include stdafx.h#include#includeusing namespace std;const double PI=3.1415926;class geometrypublic: virtual void surface() const=0;virtual void volume() const=0;class square:public geometryprivate:float a,b,c;public:square(float a1,float b1,float c1)a=a1;b=b1;c=c1;void surface()constcout该正方形的表面积为:2*(a*b+b*c+c*a)endl;void volume()constcout该正方形的体积为:a*b*cendl;class cylinder:public geometryprivate:float r,h;public:cylinder(float r1,float h1) r=r1; h=h1;void surface()constcout该圆柱体的表面积为:2*PI*r*(r+h)endl;void volume()constcout该圆柱体的体积为:PI*r*r*hendl;class globe:public geometryprivate:float r;public:globe(float r1)r=r1;void surface()constcout该球体的表面积为:4*PI*r*rendl;void volume()const cout该球体的体积为:4*PI*r*r*r/3endl;int main()square s(3,4,5);cylinder c(4.5,6);globe g(4);geometry *a3=&s,&c,&g;for(int i=0;isurface(); ai-volume();return 0;3. 设计字符串类String,完成以下功能: (1)使用+运算符实现两个字符串的连接功能。 (2)使用=运算符实现字符串的复制功能。 (3)使用=运算符判断两个字符串是否相等功能。 (4)计算字符串长度的功能。/ 3.cpp : 定义控制台应用程序的入口点。/#include stdafx.h#include#includeusing namespace std;class Stringprivate:char *str;public:String(char *str1=) str=new charstrlen(str1)+1; strcpy(str,str1);String() delete str;void display()coutstr:strstr=new charstrlen(str1.str)+strlen(str2.str)+1;strcpy(s-str,str1.str);strcat(s-str,str2.str);return *s; String & operator=(String &str1) if(strcmp(str1.str,str)=0) return str1; else str=new charstrlen(str1.str)+1; strcpy(str,str1.str); return *this ; friend bool operator=(String &str1,String &str2) if(strcmp(str1.str,str2.str)=0) return true; else return false; friend int strlen_S(String &str1) int i=0; int len=0; while(str1.stri!=0) len=len+1; i+; return len; /return strlen(str1.str); ;int main() String s(2323); String s2(2323); String s3; s.display(); s2.display(); if(s=s2) cout两字符串不相等,后者长度为strlen_S(s2)endl; else cout两字符串相等,前者长度为strlen_S(s)endl; s=s+s2; s3=s; s=s; s.display(); s3.display(); s2.display(); if(s=s2) cout两字符串不相等,后者长度为strlen_S(s2)endl; else cout两字符串相等,前者长度为strlen_S(s)endl;return 0; 五、实验要求: 在上机前写出全部源程序; 六、实验结果分析:七、实验心得体会及问题反馈: 此次实验还是比较简单,课上完有点时间了,知识点清晰度不够,重温一下,就可以很简单的完成这个实验了,实验有3题,前两题没有什么技术含

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论