c++多态性实验报告.docx
- 文档编号:17986079
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:30
- 大小:79.60KB
c++多态性实验报告.docx
《c++多态性实验报告.docx》由会员分享,可在线阅读,更多相关《c++多态性实验报告.docx(30页珍藏版)》请在冰点文库上搜索。
c++多态性实验报告
实验3多态性
实验课程名:
面向对象程序设计(C++)
专业班级:
学号:
姓名:
实验时间:
实验地点:
指导教师:
3.1实验目的和要求
(1)了解多态性的概念。
(2)掌握运算符重载的基本方法。
(3)掌握虚函数的定义和使用方法。
(4)掌握纯虚函数和抽象类的概念和用法。
二、实验内容
一、构建一个复数类Complex,试对下列几个运算符进行重载:
++,=,!
=,+,-,==,其中要求要有成员重载形式和友元重载形式,而且,++运算符要求实现先加和后加两种形式。
该类定义原型说明:
classcomplex
{
public:
complex(doubler=0,doublei=0);
complex&operator+(complex&c);
complexoperator-(complex&c);
complexoperator*(complex&c);
friendcomplexoperator/(complex&c1,complex&c2);
friendintoperator==(complex&c1,complex&c2);
friendintoperator!
=(complex&c1,complex&c2);
//friendcomplexoperator++(complex&c);
complexoperator++();
complexoperator++(int);
voiddisp();
private:
doublereal;
doubleimag;
};
实验代码如下:
#include
usingnamespacestd;
classcomplex
{
public:
complex(){real=0;imag=0;}
complex(doubler,doublei)
{
real=r;
imag=i;
}
complexoperator+(complex&c);
complexoperator-(complex&c);
complexoperator*(complex&c);
friendcomplexoperator/(complex&c1,complex&c2);
friendintoperator==(complex&c1,complex&c2);
friendintoperator!
=(complex&c1,complex&c2);
//friendcomplexoperator++(complex&c);
complexoperator++();
complexoperator++(int);
voiddisplay();
doublereal;
doubleimag;
};
complexcomplex:
:
operator+(complex&c)
{
complexc1;
c1.real=real+c.real;
c1.imag=imag+c.imag;
returnc1;
}
complexcomplex:
:
operator-(complex&c)
{
complexc1;
c1.real=real-c.real;
c1.imag=imag-c.imag;
returnc1;
}
complexcomplex:
:
operator*(complex&c)
{
complexc1;
c1.real=real*c.real-imag*c.imag;
c1.imag=real*c.imag+imag*c.real;
returnc1;
}
complexoperator/(complex&c1,complex&c2)
{
complexc;
c.real=(c1.real*c2.real+c1.imag*c2.imag)/(c2.imag*c2.imag+c2.real*c2.real);
c.imag=(c1.real*c2.imag-c1.imag*c2.real)/(c2.imag*c2.imag+c2.real*c2.real);
returnc;
}
intoperator==(complex&c1,complex&c2)
{
if(c1.real==c2.real&&c1.imag==c2.imag)
{
return1;
}
}
intoperator!
=(complex&c1,complex&c2)
{
if(c1.real!
=c2.real||c1.imag!
=c2.imag)
return1;
}
complexcomplex:
:
operator++()
{
returncomplex(real+1,imag);
}
complexcomplex:
:
operator++(int)
{
returncomplex(real,imag);
real=real+1;
}
voidcomplex:
:
display()
{
cout<<'('< } intmain() { complexc1(1,2),c2(2.1,4.5),c3; c3=c1+c2; cout<<"c1+c2="; c3.display(); c3=c1-c2; cout<<"c1-c2"; c3.display(); c3=c1*c2; cout<<"c1*c2="; c3.display(); c3=c1/c2; cout<<"c1/c2"; c3.display(); c3=c1++; cout<<"c1++="; c3.display(); c3=++c1; cout<<"++c1="; c3.display(); return0; }运行结果: 代码分析: 1)在复数类中定义了四则运算的重载函数以及比较大小的函数,当满足比较符的大小关系时返回1否则返回0; 2)当重载函数为类函数时只需一个参数,为友元函数时需要两个参数; 3)对于‘++’与‘--’,如果在自增(自减)函数中,增加一个int型的参数,就是后置自增运算符函数 二、建立一个分数类Fraction。 分数类的数据成员包括分子和分母。 成员函数包括构造函数、复制构造函数。 构造函数要对初始化数据进行必要的检查(分母不能为0)。 将分数显示成“a/b”形式的输出函数。 成员函数包括约分、通分、加、减、乘、除、求倒数、比较大小、显示和输入。 完成以上所有成员函数并在主函数中进行检验。 #include usingnamespacestd; classFraction{ intnumerator,denominator; intcommon_divisor();//计算最大公约数 voidcontracted();//分数化简 public: Fraction(int=0,int=1); Fraction(Fraction&); Fractionoperator+(Fraction); Fractionoperator-(Fraction); Fractionoperator*(Fraction); Fractionoperator/(Fraction); booloperator>=(Fraction); booloperator<=(Fraction); booloperator==(Fraction); booloperator<(Fractionf){return! (operator>=(f));} booloperator>(Fractionf){return! (operator<=(f));} booloperator! =(Fractionf){return! (operator==(f));} FractionUpdown(); voidSet(int=0,int=1); voiddisp(){cout<<"fraction="< }; 实验代码: #include #include usingnamespacestd; classFraction{ inta,b; public: voidcontracted();//分数化简 Fraction(){a=0;b=1;} Fraction(intn,intm){a=n;b=m;} Fractionoperator+(Fraction&c); Fractionoperator+(inti); Fractionoperator-(Fraction&c); Fractionoperator-(inti); Fractionoperator*(Fraction&c); Fractionoperator*(inti); Fractionoperator/(Fraction&c); Fractionoperator/(inti); intoperator>=(Fraction&c); intoperator<=(Fraction&c); intoperator==(Fraction&c); intoperator<(Fraction&c); intoperator>(Fraction&c); intoperator! =(Fraction&c); FractionUpdown();//求倒数 voidSet(int=0,int=1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 多态性 实验 报告