学院(系)名称:计算机与通信工程学院 姓名 班级 教学二班 课程名称 实验时间 批改意见 教师签字: 学号 实验项目 高级程序设计语言II 2016年11月11日 第7、8节 专业 计算机科学与技术 实验四 多态程序设计 课程代码 实验地点 成绩 0667026 计算机软件实验室7-215 实验目的: (1)理解类和对象的概念; (2)掌握类与对象的定义方法; (3)理解类的成员的访问控制的含义,公有和私有成员的区别; (4)掌握构造函数和析构函数的含义与作用、定义方式和实现; (5)能够根据给定的要求定义类并实现类的成员函数; (6)掌握string类的使用方法 (7)了解C++面向对象程序设计的基本思想、基本方法和基本步骤; (8)掌握MS Visual C++6.0或DEV C++调试C++程序的基本方法、基本步骤。 实验内容: 1. 定义Point类,有坐标x,y两个成员变量,利用友元函数对Point类重载“++”运算符,实现对坐标值的改变。具体要求如下: (1) 编写程序定义Point类,在类中定义整型的私有成员变量x,y; (2) 在类中定义两个友元函数,分别重载前置++和后置++; (3) 编写主函数测试。 注意函数有无返回值的区别,以及返回值是否带有&应用符号。 代码: #include public: Point(double _x=0,double _y=0) { x=_x; y=_y; } ~Point(){} void setx(double _x) { x=_x; } void sety(double _y) { y=_y; } double getx() { return x; } double gety() { return y; } friend void operator<<(ostream &out,const Point &p) { out<<\"Point(\"< } void sety(double _y) { y=_y; } double getx() { return x; } double gety() { return y; } friend void operator<<(ostream &out,const Point &p) { out<<\"Point(\"< void print(); friend Fenshu operator+(const Fenshu& f1,const Fenshu& f2); friend Fenshu operator-(const Fenshu& f1,const Fenshu& f2); Fenshu operator*(int n ) { Fenshu x; x.zi=zi*n; x.mu=mu; return x; } Fenshu operator/(int n) { if(n==0) { cout<<\"Nagetive!\"; return *this; } Fenshu x; x.zi=zi; x.mu=mu*n; return x; } Fenshu operator-() { Fenshu x; x.zi=-zi; x.mu=mu; return x; } void operator=(const Fenshu & f) { zi=f.zi; mu=f.mu; } }; Fenshu operator+(const Fenshu& f1,const Fenshu& f2) { Fenshu f; f.zi=f1.zi*f2.mu+f2.zi*f1.mu; f.mu=f1.mu*f2.mu; return f; } Fenshu operator-(const Fenshu& f1,const Fenshu& f2) { 第6页 共15页 Fenshu f; f.zi=f1.zi*f2.mu-f2.zi*f1.mu; f.mu=f1.mu*f2.mu; return f; } void Fenshu::print() { if(zi==0)cout<<0< 4 r3; 圆柱表面积为: 2πR(h+R)3 return r; } void seth(double _h=0.0) { h=_h; } double geth() { return h; } virtual double s()=0; virtual double v()=0; }; class Sphere:public Container { public: ~Sphere(){} Sphere(double _r=0.0):Container(_r){} double s() { return 4*PI*getr()*getr(); } double v() { return (double(4)/3)*PI*getr()*getr()*getr(); } }; class Cylinder:public Container { public: ~Cylinder(){} Cylinder(double _r=0.0,double _h=0.0):Container(_r,_h){} double s() { return 2*PI*getr()*(geth()+getr()); } double v() { return 2*PI*getr()*geth(); } }; 第9页 共15页 int main() { Container *p; Sphere a(1); Cylinder b(1,2); p=&a; cout<<\"Sphere s=\"< int getminute(); void set(int=0,int=0,int=0); void show(); Time& operator++(int); Time& operator--(int); }; Time::Time(int h,int m,int s) { if(s>59) { s%=60; m=m+s/60; } if(m>59) { m%=60; h=h+m /60; } if(h>23) h%=24; hour=h; minute=m; second=s; } void Time::sethour(int h) { if(h>23) h%=24; hour=h; } void Time::setminute(int m) { if(minute>59) { minute%=60; hour=hour+minute/60; } if(hour>23) hour%=24; minute=m; } void Time::setsecond(int s) { if(s>59) { minute=minute+s/60; s%=60; 第11页 共15页 } if(minute>59) { hour=hour+minute/60; minute%=60; } if(hour>23) hour%=24; second=s; } int Time::gethour() { return hour; } int Time::getsecond() { return second; } int Time::getminute() { return minute; } void Time::set(int h,int m,int s) { if(s>59) { m=m+s/60; s%=60; } if(m>59) { h=h+m /60; m%=60; } if(h>23) h%=24; hour=h; minute=m; second=s; } void Time::show() { cout< t.show(); do { cout<<\"输入*重新设置计数器;\"< 因篇幅问题不能全部显示,请点此查看更多更全内容