实验5类和对象实验报告_第1页
实验5类和对象实验报告_第2页
实验5类和对象实验报告_第3页
实验5类和对象实验报告_第4页
实验5类和对象实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、实验5 类和对象实验报告实验目的:1.进一步理解类和对象的概念;2.进一步理解类的成员的访问控制的含义,公有和私有成员的区别;3.掌握构造函数和析构函数的含义与作用、定义方式和实现;4.能够根据给定的要求定义类并实现类的成员函数;5.了解C+面向对象程序设计的基本思想、基本方法和基本步骤;6.掌握MS Visual C+6.0调试C+程序的基本方法、基本步骤。实验内容:一、输入下列程序,按要求进行实验,并记录实验的结果#include <iostream>using namespace std;class Coordinatepublic:Coordinate(int x1, in

2、t y1)x=x1; y=y1;Coordinate(Coordinate &p);Coordinate()cout<<"Destructor 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;cout<<"Copy initianization constructor is called."<<en

3、dl;int main()Coordinate p1(3,4);Coordinate p2(p1);Coordinate p3=p2;cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")"<<endl;return 0;1)运行结果2)将Coordinate类中带有两个参数的构造函数进行修改,在函数体内增加如下语句:cout<<”Constructor is called.”<<endl;运行结果:3)er

4、ror 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

5、bound to a non-lvalue修改:#include <iostream>using namespace std;class Coordinatepublic:Coordinate(int x1, int y1)x=x1; y=y1;Coordinate(Coordinate &p); Coordinate(); Coordinate(int i);Coordinate()cout<<"Destructor is called."<<endl;int getx()return x;int gety()return y;

6、private:int x, y;Coordinate:Coordinate(Coordinate &p)x=p.x; y=p.y;cout<<"Copy initianization constructor is called."<<endl;int main()Coordinate p1(3,4);Coordinate p2(p1); Coordinate p5(2);Coordinate p3=p2;cout<<"p3=("<<p3.getx()<<","<

7、;<p3.gety()<<")"<<endl;return 0;4)创建不同对象并调用的时候,必须满足构造函数的参数要求,如果构造函数是需要传递值,对象就该传递值。如果构造函数需要传递的是地址,对象就传递的是地址二、根据注释语句的提示实现类Date的成员函数,并将完整的程序编译、连接 成功以保证程序能够正确运行#include <iostream>using namespace std;class Datepublic:void printDate()cout<<year<<"年"<

8、<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.setY

9、ear(2012);testDay.printDate();return 0;运行结果: 三、下面是一个计算器类的定义,请完成该类的成员函数的实现,并设计一个主函数使用该类和相关成员函数以测试该类设计的正确性。#include <iostream>using namespace std;class coutnerpublic:counter(int number); /构造函数void increment(); /给value原值加2void decrement(); /给value原值减2int getvalue(); /取得计数器值int print(); /显示计数priva

10、te: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()cout<<"The value is "<<value<<endl;return value;int main()coutner c;c.counter(1);c.increment

11、();cout<<"The output is "<<c.getvalue()<<endl; c.decrement();c.print();c.increment();cout<<"The output is "<<c.print()<<endl;return 0;四、定义一个类ClsName,要求该类设计如下:(1)该类有两个整型数据成员x和y;(2)为该类重载三个不同的构造函数:分别为无参数、带一个参数和带两个参数的构造函数,要求在构造函数中输出必要的信息以示区别;(3)设计2

12、个成员函数用来读取数据成员x和y;(4)设计2个成员函数用来设置数据成员x和y;(5)设计1个成员函数用来在屏幕上打印输出数据成员x和y;(6)在main()函数中用三个不同的构造函数创建3个对象,并使用所有的成员函数对这些对象进行必要的操作。#include <iostream>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 ge

13、ty()return y; void setx(int a)x=a; void sety(int b)y=b; void print()cout<<"x="<<x<<" y="<<y<<endl;int main() ClsName cls1; ClsName cls2(5,6); ClsName cls3(7); cls1.print(); cls2.print(); cls3.print(); return 0; 五、创建一个名为Complex的类,进行复数的算术运算。编写一个测试程序来测试

14、该类。#include<iostream>using 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<<"

15、;,"<<y2<<")="<<"("<<x1+x2<<","<<y1+y2<<")"<<endl; void jian() cout<<"减:("<<x1<<","<<y1<<")-("<<x2<<","<<y2<<"

16、;)="<<"("<<x1-x2<<","<<y1-y2<<")"<<endl; void chen() cout<<"乘:("<<x1<<","<<y1<<")*("<<x2<<","<<y2<<")="<<"("&

17、lt;<(x1*x2-y1*y2)<<","<<(x1*y2+y1*x2)<<")"<<endl; void chu() cout<<"除:("<<x1<<","<<y1<<")/("<<x2<<","<<y2<<")="<<"("<<static_ca

18、st<double>(x1*x2+y1*y2)/(x2*x2+y2*y2)<<","<<static_cast<double>(y1*x2-x1*y2)/(x2*x2+y2*y2)<<")"<<endl<<endl; void set() cout<<"第一个复数:" ; cin>>x1>>y1; cout<<"第二个复数:" cin>>x2>>y2;int main()Complex a;Compl

温馨提示

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

评论

0/150

提交评论