版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验二-类与对象实验二 类与对象一、实验目的1、学习类与对象的定义,掌握类与对象的使用方法。2、学习数据成员与成员函数的访问方式,理解构造函数和析构函数的定义 与执行过程,学会构造函数的重载方法。3、掌握数组与指针的定义与使用方法, 理解数组与指针的存储分配与表示4、掌握用指针和引用向函数传递参数。5、掌握静态数据成员和静态成员函数的使用。6、理解友元与友元函数的作用与使用方法。二、实验内容1、下面是一个计算器类的定义,请完成该类成员函数的实现。class Counterpublic:Counter(int number);void increment();/给原值加 1void decrem
2、ent(); / 给原值减 1int getValue();/ 取得计数器值int print();/显示计数private:int value;#includeclass 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:getvalue(int s)v
3、alue=s;return 0;int count:print() coutvalue+1=value+1endl; coutvalue-1=value-1endl; return 0;void main()count s;s.getvalue(5);s.print();/2、根据注释语句的提示,实现类 Date 的成员函数。 #includeclass Datepub-pvoid prinfDaCDow S void sefDay(inf d) 0wttB 妄血void sefMonfh(inf mJ-wtt出 妄血 void sefYeagnf y)w 萍*妄血 privafeinf da
4、y-monfmyeacvoid Da(D:pinfDa(D()couAAyeaAA-AAmonfhw 耳AAdayAdvoid Da(D:sefDay(inf d)dayHd八void Da(D:sefMonfh(inf m)monfhHm 八void Da(D:sefYea(inf y)yearly 八inf main。Dafe fesfDay八testDay.setDay(5);testDay.setMonth(10);testDay.setYear(2014);testDay.printDate();return 0;3、建立类 cylinder ,cylinder 的构造函数被传递了两
5、个 double 值,分别表 示圆柱体的半径和高度。 用类 cylinder 计算圆柱体的体积, 并存储在一个 double 变量中。在类 cylinder 中包含一个成员函数 vol() ,用来显示每个 cylinder 对象 的体积。#include class cylinder private: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()c
6、outConstructor calledendl;double cylinder:vol()double v;v=3.14*r*r*h;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 class book private:int qu;int price;int
7、 s; public:book(int p,int q):qu(p),price(q)void print()coutqu*priceendl;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 值。#includeclass bookprivate:int qu;int pri
8、ce;int s;public: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-)coutprint()endl; p-;return 0;6、构建一个类 Stock,含字符数组 stockcode 及整型数据成员 quan 、双精 度型数据成员 price。构造函数含 3 个参数:字符数组 na 及 q、p。当定义 Stock 的类对象时,将对象的第一个字符串参数赋给数据成员stockcode,第 2 个和第
9、3 个参数分别赋给 quan 和 price 。未设置第 2 个和第 3 个参数时, quan 的值为 1000,price 的值为 8.98。成员函数 print() 使用 this 指针,显示对象内容。#include#includeclass 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(stockcode,na);quan=q;pric
10、e=p;void Stock:print() coutstockcode,quan,priceendl;void main()Stock m(sdgjgj,798,9.89);m.print();Stock n(sljf);cout 默认: ;n.print();7、参考课本例子,建立一个源程序文件,在此文件中建立一个新的类,将新建的类命名为 Rect。class Rectpublic:int Area_int();double Area_double(); Rect(double length ,double width); Rect(int length , int width); vir
11、tual Rect();private :int nLength;int nWidth;double dLength;double dWidth;;【要求】(1) 向 Rect 类中添加数据成员及成员函数,并完善成员函数的功能。如设计 一个 Area_int() 函数,计算边长为整型的长方形的面积; 设计一个 Area_double() 函数,计算边长为 double 型的长方形的面积。(2) 重载构造函数。一种构造函数用整型变量记录长方形的长和宽,另一种 构造函数用 double 型记录。(3) 体现对象的构造和析构过程。例如,在构造函数中用cout ” Ia m theconstructo
12、r! ”endl ;在析构函数中输出 cout ” I am the destructo r ”endl 。(4) 在 main() 函数中定义两个 Rect 类的对象,一个对象用实例实现 (就像定 义普通的变量一样 ),另一个对象用指针实现 (利用关键字 new,给指针分配内存 空间)。并用不同的参数,以调用不同的构造函数体现构造函数的重载。#includeclass Rectpublic:int Area_int();double Area_double();Rect(double length,double width);Rect(int length,int width);virtua
13、l Rect();private:int nLength;int nWidth;double dLength;double dWidth;int Rect:Area_int()int s;s=nLength*nWidth;coutint 的长方形的面积 :sendl;return 0;double Rect:Area_double()double k;k=dLength*dWidth;coutdouble 型的长方形的面积 : kendl; return 0;Rect:Rect(int length,int width)nLength=length;nWidth=width;coutI am
14、the constructor!endl;Rect:Rect()coutI am the destructorendl;Rect:Rect(double length,double width) dLength=length;dWidth=width;coutI am the constructor!Area_int();delete p;Rect *q=new Rect(3.2,3.4);q-Area_double();delete q;8、声明一个 Student,在该类中包括一个数据成员 score(分数)、两个静态 数据成员 total_score(总分)和 count(学生人数 );
15、还包括一个成员函数 account() 用于设置分数、累计学生的成绩之和、累计学生人数,一个静态成员函数 sum() 用于返回学生的成绩之和,另一个静态成员函数average()用于求全班成绩的平均值。在 main() 函数中,输入某班学生的成绩,并调用上述函数求出全班学生 的成绩之和和平均分。#includeclass studentdouble score;static double tatal_score;static int count;static double ave; public:void account(double);static double sum();static d
16、ouble average();void print();void student:account(double m)score=m;tatal_score=tatal_score+m;+count;double student:sum()return(tatal_score);double student:average()ave=tatal_score/count;return ave;void student:print()cout 人数为: countendl;aveendl;cout 总成绩为 : tatal_score 平均成绩为:int student:count=0;doubl
17、e student:tatal_score=0.0;double student:ave=0.0;void main()student 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)
18、,B(x2,y2)Distance=d其中: x1、 y1、x2、 y2 为指定的坐标值, d 为两个坐标点之间的距离 #include#includeclass locationdouble 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
19、 dy=y-m.y;double d=sqrt(dx*dx+dy*dy);coutAB 的 distance:dendl;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);coutAB 的 distance:dendl;void main()location A(-3.0,-2.0);location B(-4.3,4.3);A.print(B);print(A,B);10、使用 C+的 string 类,将 5 个字符串按逆转后的顺序显示出来。例如, 逆转前的 5个字符串是: Germany 、Japan 、American 、British 、France 按逆转后的顺序输出字符串为:France 、British 、American 、Japan 、Germany #include#includeusing namespace std; void main()string s5=Germany,Japan,American,British,France;for(int i=4;i=0;i-)coutsiendl;11
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 进行性延髓麻痹病因介绍
- T-CIE 232-2024 液气换热型水冷板式间接液冷数据中心设计规范
- 中考地理总复习七下第七章了解地区第九课时教材知识梳理
- 呼吸道职业暴露
- (报批版)塑料造粒环评报告书
- 商务励志工作报告汇报模板33
- 重庆2020-2024年中考英语5年真题回-教师版-专题01 语法选择
- 云南省曲靖市沾益区2024-2025学年七年级9月月考道德与法治试题(解析版)-A4
- 2023年汽车电喷项目融资计划书
- 2023年变压器、整流器和电感器项目融资计划书
- 新教材人教A版高中数学选择性必修第一册全册教学课件
- IEC60335-1-2020中文版-家用和类似用途电器的安全第1部分:通用要求(中文翻译稿)
- 《HSK标准教程1》-HSK1-L8课件
- 幼儿园小班绘本:《藏在哪里了》 课件
- 上册外研社六年级英语复习教案
- 替班换班登记表
- 社会保险法 课件
- 阿利的红斗篷 完整版课件PPT
- 桥梁工程挡土墙施工
- 供应商质量问题处理流程范文
- 实验室生物安全手册(完整版)资料
评论
0/150
提交评论