C++实验四 多态程序设计Word格式.docx
- 文档编号:15773238
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:21
- 大小:66.30KB
C++实验四 多态程序设计Word格式.docx
《C++实验四 多态程序设计Word格式.docx》由会员分享,可在线阅读,更多相关《C++实验四 多态程序设计Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
教师签字:
实验目的:
(1)理解类和对象的概念;
(2)掌握类与对象的定义方法;
(3)理解类的成员的访问控制的含义,公有和私有成员的区别;
(4)掌握构造函数和析构函数的含义与作用、定义方式和实现;
(5)能够根据给定的要求定义类并实现类的成员函数;
(6)掌握string类的使用方法
(7)了解C++面向对象程序设计的基本思想、基本方法和基本步骤;
(8)掌握MSVisualC++6.0或DEVC++调试C++程序的基本方法、基本步骤。
实验内容:
1.定义Point类,有坐标x,y两个成员变量,利用友元函数对Point类重载“++”运算符,实现对坐标值的改变。
具体要求如下:
(1)编写程序定义Point类,在类中定义整型的私有成员变量x,y;
(2)在类中定义两个友元函数,分别重载前置++和后置++;
(3)编写主函数测试。
注意函数有无返回值的区别,以及返回值是否带有&
应用符号。
代码:
#include<
iostream>
usingnamespacestd;
classPoint
{
private:
doublex,y;
public:
Point(double_x=0,double_y=0)
{
x=_x;
y=_y;
}
~Point(){}
voidsetx(double_x)
voidsety(double_y)
doublegetx()
returnx;
doublegety()
returny;
friendvoidoperator<
<
(ostream&
out,constPoint&
p)
out<
"
Point("
p.x<
"
p.y<
)\n"
;
friendvoidoperator++(Point&
p,int);
p);
};
voidoperator++(Point&
p,int)
p.x++;
p.y++;
}
++p.x;
++p.y;
intmain()
Pointa(1,1),b(3,4);
cout<
a;
b;
a++;
++b;
return0;
运行结果如下:
2.定义Point类,有坐标x,y两个成员变量,利用运算符重载对Point类重载“++”运算符,实现对坐标值的改变。
(2)定义成员函数Point&
operator++();
Pointoperator++(int);
以实现对Point类重载“++”运算符,分别重载前置++和后置++;
源代码如下:
Pointoperator++(int)
x+=2;
y+=2;
return*this;
Point&
operator++()
++x;
++y;
3.定义一个分数类,通过重载运算符实现分数的四则运算、求负运算和赋值运算。
其中,要求加法“+”和减法“-”用友元函数实现重载,其他运算符用成员函数实现重载。
cmath>
Usingnamespacestd;
classFenshu
intzi;
intmu;
Fenshu(int_zi=0,int_mu=1)
zi=_zi;
mu=_mu;
~Fenshu(){}
voidsetzi(int_zi=0)
voidsetmu(int_mu=1)
intgetzi()
returnzi;
intgetmu()
returnmu;
voidprint();
friendFenshuoperator+(constFenshu&
f1,constFenshu&
f2);
friendFenshuoperator-(constFenshu&
Fenshuoperator*(intn)
Fenshux;
x.zi=zi*n;
x.mu=mu;
Fenshuoperator/(intn)
if(n==0)
{
cout<
Nagetive!
return*this;
}
x.zi=zi;
x.mu=mu*n;
Fenshuoperator-()
x.zi=-zi;
voidoperator=(constFenshu&
f)
zi=f.zi;
mu=f.mu;
Fenshuoperator+(constFenshu&
f2)
Fenshuf;
f.zi=f1.zi*f2.mu+f2.zi*f1.mu;
f.mu=f1.mu*f2.mu;
returnf;
Fenshuoperator-(constFenshu&
f.zi=f1.zi*f2.mu-f2.zi*f1.mu;
voidFenshu:
:
print()
if(zi==0)cout<
0<
endl;
else
int_zi=abs(zi>
mu?
zi:
mu),_mu=abs(mu<
zi?
mu:
zi);
intx;
x=_zi%_mu;
while(x!
=0)
_mu=_zi;
_zi=x;
x=_mu%_zi;
zi/=(_zi>
_mu?
_mu:
_zi);
mu/=(_zi>
zi<
/"
mu<
Fenshux(2,4),y(4,4);
Fenshuz,a,b,c,d,e;
z=x+y;
a=y-x;
b=x-y;
c=-x;
d=y*(-1);
e=y/2;
z.print();
a.print();
b.print();
c.print();
d.print();
e.print();
4.编写程序,定义抽象基类Container,由此派生出2个派生类球体类Sphere,圆柱体类Cylinder,分别用虚函数分别计算表面积和体积。
(1)球体的表面积为:
,球体的体积为
;
圆柱表面积为:
2πR(h+R)圆柱体的体积πR2h。
(2)定义相应的对象,编写主函数测试。
代码如下:
constdoublePI=3.14;
classContainer
doubler;
doubleh;
~Container(){}
Container(double_r=0.0,double_h=0.0)
r=_r;
h=_h;
voidsetr(double_r=0.0)
doublegetr()
returnr;
voidseth(double_h=0.0)
doublegeth()
returnh;
virtualdoubles()=0;
virtualdoublev()=0;
classSphere:
publicContainer
~Sphere(){}
Sphere(double_r=0.0):
Container(_r){}
doubles()
return4*PI*getr()*getr();
doublev()
return(double(4)/3)*PI*getr()*getr()*getr();
classCylinder:
~Cylinder(){}
Cylinder(double_r=0.0,double_h=0.0):
Container(_r,_h){}
return2*PI*getr()*(geth()+getr());
return2*PI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+实验四 多态程序设计 C+ 实验 程序设计