




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 试用期提前转正了合同5篇
- 项目资金预算表-项目资金筹措与预算
- 建筑工程合同种类
- 2025年淮南资格证模拟考试
- 2025年江西货运从业资格证考试题答案解析大全
- 云服务器托管服务及支持合同
- 个人酒店承包经营合同8篇
- 上海员工的劳动合同范本5篇
- 课题申报书参考文献格式
- 中国电建合同范本
- 2025年常州工业职业技术学院单招职业技能测试题库及答案1套
- 2025年湖南理工职业技术学院单招职业适应性测试题库必考题
- 2025年湖南城建职业技术学院单招职业技能测试题库完美版
- 会计信息化练习题库+参考答案
- 武汉2025年湖北武汉市教育系统专项招聘教师679人笔试历年参考题库附带答案详解
- 高中主题班会 借哪吒精神燃开学斗志!课件-高一下学期开学第一课班会
- 2024年12月2025浙江湖州市长兴县综合行政执法局公开招聘辅助执法人员8人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 水产养殖尾水处理技术-第1篇-深度研究
- 财务管理毕业论文
- 网课智慧树知道《老年医学概论(浙江大学)》章节测试答案
- MOOC 数据库系统(中):建模与设计-哈尔滨工业大学 中国大学慕课答案
评论
0/150
提交评论