资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
实验5 类和对象实验报告实验目的:1.进一步理解类和对象的概念;2.进一步理解类的成员的访问控制的含义,公有和私有成员的区别;3.掌握构造函数和析构函数的含义与作用、定义方式和实现;4.能够根据给定的要求定义类并实现类的成员函数;5.了解C+面向对象程序设计的基本思想、基本方法和基本步骤;6.掌握MS Visual C+6.0调试C+程序的基本方法、基本步骤。实验内容:一、输入下列程序,按要求进行实验,并记录实验的结果#include using namespace std;class Coordinatepublic:Coordinate(int x1, int y1)x=x1; y=y1;Coordinate(Coordinate &p);Coordinate()coutDestructor is called.endl;int getx()return x;int gety()return y;private:int x, y;Coordinate:Coordinate(Coordinate &p)x=p.x; y=p.y;coutCopy initianization constructor is called.endl;int main()Coordinate p1(3,4);Coordinate p2(p1);Coordinate p3=p2;coutp3=(p3.getx(),p3.gety()endl;return 0;1)运行结果2)将Coordinate类中带有两个参数的构造函数进行修改,在函数体内增加如下语句:cout”Constructor is called.”endl;运行结果:3)error C2512: Coordinate : no appropriate default constructor availableerror C2664: _thiscall Coordinate:Coordinate(class Coordinate &) : cannot convert parameter 1 from const int to class Coordinate & A reference that is not to const cannot be bound to a non-lvalue修改:#include using namespace std;class Coordinatepublic:Coordinate(int x1, int y1)x=x1; y=y1;Coordinate(Coordinate &p); Coordinate(); Coordinate(int i);Coordinate()coutDestructor is called.endl;int getx()return x;int gety()return y;private:int x, y;Coordinate:Coordinate(Coordinate &p)x=p.x; y=p.y;coutCopy initianization constructor is called.endl;int main()Coordinate p1(3,4);Coordinate p2(p1); Coordinate p5(2);Coordinate p3=p2;coutp3=(p3.getx(),p3.gety()endl;return 0;4)创建不同对象并调用的时候,必须满足构造函数的参数要求,如果构造函数是需要传递值,对象就该传递值。如果构造函数需要传递的是地址,对象就传递的是地址二、根据注释语句的提示实现类Date的成员函数,并将完整的程序编译、连接 成功以保证程序能够正确运行#include using namespace std;class Datepublic:void printDate()coutyear年month月day日endl;void setDay(int dayx)day=dayx;/设置日的值void setMonth(int monthx)month=monthx;/设置月的值void setYear(int yearx)year=yearx; /设置年的值private:int day, month, year;int main()Date testDay;testDay.setDay(24);testDay.setMonth(10);testDay.setYear(2012);testDay.printDate();return 0;运行结果: 三、下面是一个计算器类的定义,请完成该类的成员函数的实现,并设计一个主函数使用该类和相关成员函数以测试该类设计的正确性。#include using namespace std;class coutnerpublic:counter(int number); /构造函数void increment(); /给value原值加2void decrement(); /给value原值减2int getvalue(); /取得计数器值int print(); /显示计数private:int value; /数据成员;coutner:counter(int number)value=number;void coutner:increment()value+=2;void coutner:decrement()value-=2;int coutner:getvalue()return value;int coutner:print()coutThe value is valueendl;return value;int main()coutner c;c.counter(1);c.increment();coutThe output is c.getvalue()endl; c.decrement();c.print();c.increment();coutThe output is c.print()endl;return 0;四、定义一个类ClsName,要求该类设计如下:(1)该类有两个整型数据成员x和y;(2)为该类重载三个不同的构造函数:分别为无参数、带一个参数和带两个参数的构造函数,要求在构造函数中输出必要的信息以示区别;(3)设计2个成员函数用来读取数据成员x和y;(4)设计2个成员函数用来设置数据成员x和y;(5)设计1个成员函数用来在屏幕上打印输出数据成员x和y;(6)在main()函数中用三个不同的构造函数创建3个对象,并使用所有的成员函数对这些对象进行必要的操作。#include using namespace std;class ClsNameprivate: int x,y;public:ClsName()x=0,y=0; ClsName(int c)x=c,y=0; ClsName(int a,int b)x=a,y=b; int getx()return x; int gety()return y; void setx(int a)x=a; void sety(int b)y=b; void print()coutx=x y=yendl;int main() ClsName cls1; ClsName cls2(5,6); ClsName cls3(7); cls1.print(); cls2.print(); cls3.print(); return 0; 五、创建一个名为Complex的类,进行复数的算术运算。编写一个测试程序来测试该类。#includeusing namespace std;class Complexprivate:double x1,y1,x2,y2;public:Complex()x1=1;y1=1;x2=1;y2=1;Complex(int a,int b,int c,int d)x1=a;y1=b;x2=c;y2=d;Void jia() cout加:(x1,y1)+(x2,y2)=(x1+x2,y1+y2)endl; void jian() cout减:(x1,y1)-(x2,y2)=(x1-x2,y1-y2)endl; void chen() cout乘:(x1,y1)*(x2,y2)=(x1*x2-y1*y2),(x1*y2+y1*x2)endl; void chu() cout除:(x1,y1)/(x2,y2)=(static_cast(x1*x2+y1*y2)/(x2*x2+y2*y2),static_cast(y1*x2-x1*y2)/(x2*x2+y2*y2)endlendl; void set() coutx1y1; coutx2y2;int main()Complex a;Complex c(4,3,2,1);cout以(a, b)的形式打印复数,其中a为实部,b为虚部,其中系统默认的复数为(1,1)endlendl;cout1.未初始化值endl;a.jia();a.jian();a.chen();a.chu();cout2.
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号