




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验二 类与对象一、实验目的1、学习类与对象的定义,掌握类与对象的使用方法。2、学习数据成员与成员函数的访问方式,理解构造函数和析构函数的定义与执行过程,学会构造函数的重载方法。3、掌握数组与指针的定义与使用方法,理解数组与指针的存储分配与表示。4、掌握用指针和引用向函数传递参数。5、掌握静态数据成员和静态成员函数的使用。6、理解友元与友元函数的作用与使用方法。二、实验内容1、下面是一个计算器类的定义,请完成该类成员函数的实现。class Counter public: Counter(int number); void increment(); /给原值加1 void decrement()
2、; /给原值减1 int getValue(); /取得计数器值 int print(); /显示计数 private: int value;#include<iostream.h>class countpublic:counter(int number);void increment();void decrement();int getvalue(int);int print();private:int value;void count:increment() int a=value+1;void count:decrement()int b=value-1;int count:
3、getvalue(int s)value=s;return 0;int count:print()cout<<value<<"+1="<<value+1<<endl;cout<<value<<"-1="<<value-1<<endl;return 0;void main()count s;s.getvalue(5);s.print();/2、根据注释语句的提示,实现类Date的成员函数。#include<iostream.h>class Date
4、public: void printDate();/显示日期 void setDay(int d);/设置日的值 void setMonth(int m);/设置月的值 void setYear(int y);/设置年的值 private: int day,month,year;void Date:printDate()cout<<year<<"年"<<month<<"月"<<day<<"日" void Date:setDay(int d)day=d;void D
5、ate:setMonth(int m)month=m;void Date:setYear(int y)year=y;int main()Date testDay;testDay.setDay(5);testDay.setMonth(10);testDay.setYear(2014);testDay.printDate();return 0;3、建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。用类cylinder计算圆柱体的体积,并存储在一个double变量中。在类cylinder中包含一个成员函数vol(),用来显示每个cylinder
6、对象的体积。#include<iostream.h>class cylinderprivate:double r;double h;double v;public:cylinder(); double vol(); cylinder(double,double);cylinder:cylinder(double m,double n):r(m),h(n)cylinder:cylinder()cout<<"Constructor called"<<endl;double cylinder:vol()double v;v=3.14*r*r*h
7、;return v;double main()cylinder a(1.1,2.2);cout<<"体积="<<a.vol()<<endl;return 0;4、构建一个类book,其中含有两个私有数据成员qu和price,建立一个有5个元素的数组对象,将qu初始化为15,将price初始化为qu的10倍。显示每个对象的qu*price值。#include<iostream.h>class bookprivate:int qu;int price;int s;public:book(int p,int q):qu(p),pri
8、ce(q)void print()cout<<qu*price<<endl;int main()book a(1,10);a.print();book b(2,20);b.print();book c(3,30);c.print();book d(4,40);d.print();book e(5,50);e.print();return 0;5、修改上题,通过对象指针访问对象数组,使程序以相反的顺序显示对象数组的qu*price值。#include<iostream.h>class bookprivate:int qu;int price;int s;pub
9、lic:book(int p)qu=p;price=qu*10;int print()return(qu*price);int main() book a5=1,2,3,4,5;book *p;p=&a4;for(int i=4;i>=0;i-)cout<<p->print()<<endl;p-; return 0;6、构建一个类Stock,含字符数组stockcode及整型数据成员quan、双精度型数据成员price。构造函数含3个参数:字符数组na及q、p。当定义Stock的类对象时,将对象的第一个字符串参数赋给数据成员stockcode,第2个
10、和第3个参数分别赋给quan和price。未设置第2个和第3个参数时,quan的值为1000,price的值为8.98。成员函数print()使用this指针,显示对象内容。#include<iostream.h>#include<string>class Stockchar stockcode10;int quan;double price;public: Stock(char na10,int q=1000,double p=8.98);void print();Stock:Stock(char na10,int q,double p) strcpy(stockco
11、de,na);quan=q;price=p;void Stock:print()cout<<this->stockcode<<","<<this->quan<<","<<this->price<<endl;void main()Stock m("sdgjgj",798,9.89);m.print();Stock n("sljf");cout<<"默认:"n.print();7、参考课本例子,建立
12、一个源程序文件,在此文件中建立一个新的类,将新建的类命名为Rect。class Rectpublic: int Area_int(); double Area_double(); Rect(double length,double width); Rect(int length,int width); virtual Rect();private: int nLength; int nWidth; double dLength; double dWidth;;【要求】(1)向Rect类中添加数据成员及成员函数,并完善成员函数的功能。如设计一个Area_int()函数,计算边长为整型的长方形的面
13、积;设计一个Area_double()函数,计算边长为double型的长方形的面积。(2)重载构造函数。一种构造函数用整型变量记录长方形的长和宽,另一种构造函数用double型记录。(3)体现对象的构造和析构过程。例如,在构造函数中用cout<<”I am the constructor!”<<endl;在析构函数中输出cout<<”I am the destructor”<<endl。(4)在main()函数中定义两个Rect类的对象,一个对象用实例实现(就像定义普通的变量一样),另一个对象用指针实现(利用关键字new,给指针分配内存空间)。并
14、用不同的参数,以调用不同的构造函数体现构造函数的重载。#include<iostream.h>class Rectpublic: int Area_int(); double Area_double(); Rect(double length,double width); Rect(int length,int width); virtual Rect();private: int nLength; int nWidth; double dLength; double dWidth;int Rect:Area_int()int s;s=nLength*nWidth;cout<
15、<"int的长方形的面积:"<<s<<endl;return 0;double Rect:Area_double()double k;k=dLength*dWidth;cout<<"double型的长方形的面积: "<<k<<endl;return 0;Rect:Rect(int length,int width)nLength=length;nWidth=width;cout<<"I am the constructor!"<<endl;Rec
16、t:Rect() cout<<"I am the destructor"<<endl;Rect:Rect(double length,double width) dLength=length;dWidth=width; cout<<"I am the constructor!"<<endl;void main()Rect a(2,2),b(2.3,3.4);a.Area_int();b.Area_double(); Rect *p=new Rect(3,4); p->Area_int();delete
17、 p;Rect *q=new Rect(3.2,3.4);q->Area_double();delete q;8、声明一个Student,在该类中包括一个数据成员score(分数)、两个静态数据成员total_score(总分)和count(学生人数);还包括一个成员函数account()用于设置分数、累计学生的成绩之和、累计学生人数,一个静态成员函数sum()用于返回学生的成绩之和,另一个静态成员函数average()用于求全班成绩的平均值。在main()函数中,输入某班学生的成绩,并调用上述函数求出全班学生的成绩之和和平均分。#include<iostream.h>cla
18、ss studentdouble score;static double tatal_score;static int count;static double ave;public:void account(double);static double sum();static double average();void print();void student:account(double m)score=m;tatal_score=tatal_score+m;+count;double student:sum()return(tatal_score);double student:avera
19、ge()ave=tatal_score/count;return ave;void student:print()cout<<"人数为:"<<count<<endl; cout<<"总成绩为: "<<tatal_score<<"平均成绩为:"<<ave<<endl;int student:count=0;double student:tatal_score=0.0;double student:ave=0.0;void main()stud
20、ent a;a.account(97);a.sum();a.average();student b;b.account(87);b.sum();b.average();b.print();9、设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标点在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离,要求按如下格式输出结果:A(x1,y1),B(x2,y2)Distance=d其中:x1、y1、x2、y2为指定的坐标值,d为两个坐标点之间的距离。#include<iostream.h>#in
21、clude<math.h>class location double x; double y;public:location(double,double);void print(location m);friend void print(location &,location &);location:location(double m,double n)x=m;y=n;void location:print(location m)double dx=x-m.x;double dy=y-m.y; double d=sqrt(dx*dx+dy*dy);cout<&
22、lt;"AB的distance:"<<d<<endl;void print(location &a,location &b)double dx=a.x-b.x;double dy=a.y-b.y;double d=sqrt(dx*dx+dy*dy);cout<<"AB的distance:"<<d<<endl;void main()location A(-3.0,-2.0);location B(-4.3,4.3);A.print(B);print(A,B);10、使用C+的str
23、ing类,将5个字符串按逆转后的顺序显示出来。例如,逆转前的5个字符串是:Germany、Japan、American、British、France按逆转后的顺序输出字符串为:France、British、American、Japan、Germany#include<iostream>#include<string>using namespace std;void main()string s5="Germany","Japan","American","British","France"for(int i=4;i>=0;i-)cout<<si<<endl;11、设计一个矩阵类Matrix,有分配空间和对矩阵赋值的功能,将这个矩阵类的对象作为参数传送到函数Mul(Matrix a,Matrix b),用Mul(Matrix a,M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校企合同范本(2篇)
- 《机器学习技术应用》课件-pro1-3-1 食堂就餐行为分析
- 2025年新版购房合同模板下载
- 有理数减法教学设计
- 2025房屋借款抵押合同文本
- 2025私营企业非全日制标准合同范本
- 2025年二级建造师之二建机电工程实务模拟考试试卷B卷含答案
- 2025合同签订新风尚:双方用工务必“严谨对待”
- 头部良性组织细胞增生症的临床护理
- 二尖瓣腱索断裂的临床护理
- 2025劳动合同范本下载打印
- 微生物检验的基础知识试题及答案
- 2025年北京市三类人员安全员c3证考试题库及答案
- (四调)武汉市2025届高中毕业生四月调研考试 地理试卷(含答案)
- GB/T 45434.3-2025中国标准时间第3部分:公报
- 北京市消防条例解读
- 2025年中国城市轨道交通维修行业投资潜力分析及行业发展趋势报告
- 公司转让租赁合同样本
- 大概念视角下的初中数学函数单元整体教学设计研究与实践
- 海南省海口市(2024年-2025年小学五年级语文)统编版期中考试((上下)学期)试卷及答案
- 封条模板A4直接打印版
评论
0/150
提交评论