实验五q 多态.doc_第1页
实验五q 多态.doc_第2页
实验五q 多态.doc_第3页
实验五q 多态.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

实验五 多态程序设计一、 实验目的:理解运算符重载的概念和实质,掌握运算符重载函数的定义方法,掌握运算符重载为类的成员函数和友元函数的方法。掌握虚函数的定义方法及其在实现多态性中的应用,理解静态连编和动态链编的区别。二、 实验时间:三、 实验地点:四、 实验内容:1已知基类:class Base public : virtual void I_am()cout”Base”endl; 要求:(1)从Base类中派生出两个类,分别定义I_am()函数,实现输出自己类的名字。(2)主函数中创建者3个类的对象来调用I_am()函数,再利用Base的指针数组通过循环语句来调用这3个对象的I_am()函数。#include#includeclass baseprotected:char * str;public:base (char name)str=new char sizeof(name)+1;strcpy(str,name);virtual void I_am()coutBaseendl;base()deletestr;class dog:public basepublic:dog(char *na):base(na) void I_am()coutI_amstrendl;class cat:public basepublic:cat(char *na):base(na) void I_am()coutI_amstrendl;int main()base a(1);a.I_am();dog b(2);b.I_am(); cat c(3);c.I_am();base * dongwu3; dongwu0=new base(1);dongwu1=new dog(2);dongwu2=new cat(3);for(int i=0;iI_am();return 0; 2. 编写程序,计算圆柱体,球体,正方体的表面积和体积。要求用抽象类实现。#include#define PI 3.14259 /const PI=3.14159;class base public:virtual float area()=0;virtual float volumn()=0;class yuanzhuti:public baseprivate:int m,n;public:yuanzhuti(int x=0,int y=0):m(x),n(y)float area()return PI*m*m+2*PI*m*n ; float volumn()return PI*m*m*n; ;class qiuti:public baseprivate:int k;public:qiuti(int x=0):k(x)float area()return 4*PI*k*k; float volumn()return 4/3*PI*k*k*k; ;class zfti:public baseprivate:int b;public:zfti(int x=0):b(x)float area()return 6*b*b; float volumn()return b*b*b; ;int main ()int m,n,k,t;cout请输入圆柱体的底面半径和高mn;yuanzhuti a(m,n);cout圆柱体的面积和体积如下:endl;cout面积是a.area()体积是a.volumn()endl;cout请输入球体的半径k;qiuti b(k);cout球体的面积和体积如下:endl;cout面积是b.area()体积是b.volumn()endl;cout请输入正方形的边长t;zfti c(t);cout圆柱体的面积和体积如下:endl;cout面积是c.area()体积是c.volumn()endl;return 0; 3. 设计字符串类String,完成以下功能: (1)使用+运算符实现两个字符串的连接功能。 (2)使用=运算符实现字符串的复制功能。 (3)使用=运算符判断两个字符串是否相等功能。 (4)计算字符串长度的功能。#include#includeclass string private: char *str; public: string(char *s= )str=new charstrlen(s)+1;strcpy(str,s); string(string &ss)strcpy(str,ss.str); string()delete str; string & operator =(string &s3); friend string &operator+( string &s1,string &s2); friend bool operator = (string &s5,string &s6); friend int changdu(string &s); void print()coutstrstr=new charstrlen(s1.str)+strlen(s2.str)+1;strcpy(ss-str,s1.str); strcat(ss-str,s2.str);return *ss; /*string & operator+( string &s1,string &s2) string ss;ss.str=new charstrlen(s1.str)+strlen(s2.str)+1;strcpy(ss.str,s1.str); strcat(ss.str,s2.str);return ss;*/string &string:operator = (string &s3 )if(this=&s3) return * this;deletestr;str=new charstrlen(s3.str)+1;strcpy( str,s3.str); return * this; bool operator=(string &s5,string &s6) if(strcmp(s5.str,s6.str)=0) cout字符串s5.str相等于s6.strendl; return true; else cout字符串s5.str不相等于s6.strendl; return false; int changdu(string &s) cout字符串长度为strlen(s.str)+1endl; return 0; void main()int m; string ss;string s1(anhhh); string s2(mmmmm); string s3(anhh); string s4(m

温馨提示

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

评论

0/150

提交评论