实验3 类和对象(2).doc_第1页
实验3 类和对象(2).doc_第2页
实验3 类和对象(2).doc_第3页
实验3 类和对象(2).doc_第4页
实验3 类和对象(2).doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

实验3 类和对象(2)班级 学号 姓名 成绩 一、实验目的1 掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;2 掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数;3 掌握友元函数的含义,友元函数和成员函数的区别。 二、实验内容1以下程序主要测试静态成员的使用方法,请根据题目意思,说明错误原因,给出修改方案使之能正确运行。#include using namespace std;class Test / 测试静态成员类private:static int count; public:Test() count+; / 构造函数, 实现对对象进行计数 Show() cout 共有 count 个对象! endl; / 显示对象数;int count = 0;/ 为静态数据成员赋初值void main( )Test obj1, obj2, obj3;Test:Show();/ 显示对象数2. 以下程序主要是友元函数的使用方法,找出错误原因,给出修改方案使之能正确运行,比较结果的正确性和默认参数值的使用。#includeusing namespace std;class Date int year, month, day; public: Date(int m=1,int d=1,int y=2013) year=y; month=m;day=d; friend void show( Date &dt) /友元函数的原型说明 ;friend void show( Date &dt) coutyear-month-dayendl;void main( ) Date d1(6,8,2013),d2(6,18),d3(5),d4; show(d1); show(d2);show(d3);show(d4);3编程计算两点之间的距离。(四种方法编程求解) (1)用成员函数 (2)用友元函数(3)用普通函数(4)用类的组合(定义点类Point,再定义一个类Distance描述两点之间的距离,其数据成员为两个点类对象)测试数据:两个点的坐标分别为(1,1)和(4,4)4定义一个车基类Vehicle,含私有成员speed,weight。派生出自行车类Bicycle,增加high成员;汽车类Car,增加seatnum成员。从bicycle和car中派生出摩托车类Motocycle。编写程序建立摩托车对象,并输出它的有关数据。三、实验源程序、测试与结论1. 分析:出错原因:静态数据的初始化和调用语句不对。修改方案:#include using namespace std;class Test / 测试静态成员类private:static int count; public:Test() count+; / 构造函数, 实现对对象进行计数 static Show() cout 共有 count 个对象! endl; / 显示对象数;int Test:count = 0;/ 为静态数据成员赋初值void main( )Test obj1, obj2, obj3;Test:Show();/ 显示对象数测试数据截图:2. 分析:出错原因:友元函数的定义格式不对,友元函数的定义中数据调用错误。修改方案:#includeusing namespace std;class Date int year, month, day; public: Date(int m=1,int d=1,int y=2013) year=y; month=m;day=d; friend void show( Date &dt); /友元函数的原型说明 ; void show( Date &dt) coutdt.year-dt.month-dt.dayendl;void main( ) Date d1(6,8,2013),d2(6,18),d3(5),d4; show(d1); show(d2);show(d3);show(d4);测试数据截图:3. 源程序:#include#include /头文件的声明using namespace std;class point /定义坐标点类 /成员函数 float a1,a2,b1,b2,range;public: void setpoint(float x1,float y1,float x2,float y2) /坐标的键入 a1=x1;b1=y1;a2=x2;b2=y2;range=(float)sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); void showpoint() coutrangeendl; friend void friends(float x11,float y11,float x22,float y22,point &p); ; class Dstance /类的组合point points; /内嵌对象point public: Dstance(float x11,float y11,float x22,float y22); Dstance:Dstance(float x11,float y11,float x22,float y22) points.setpoint(x11,y11,x22,y22) ; /计算对象和成员对象points.showpoint();void friends(float x11,float y11,float x22,float y22,point &p) /友元函数 float range; p.setpoint(x11,y11,x22,y22); p.showpoint(); /控制小数点的输出格式 float unsualpoint(float x11,float y11,float x22,float y22) /普通函数 float range; range=(float)sqrt(x11-x22)*(x11-x22)+(y11-y22)*(y11-y22);/计算两点/间的距离 return range; void main()system(title 坐标点的距离);cout点(1,1)与点(4,4)之间的距离endl;cout用成员函数输出:;point T;T.setpoint(1,1,4,4);T.showpoint();cout用友元函数输出:;friends(1,1,4,4,T);cout用普通函数输出:;coutunsualpoint(1,1,4,4)endl;cout用类的组合输出:;Dstance t(1,1,4,4);system(pause);数据测试截图:4. 源程序:#include using namespace std; class Vechicle double speed; double weight; public: Vechicle()speed=0;weight=0; Vechicle(double a,double b):speed(a),weight(b) virtual void show(); virtualVechicle() ; void Vechicle:show() coutspeed:speedendl; coutweight:weightendl; class Bicycle:public Vechicle double high; public: Bicycle() Bicycle(double a,double b,double c):Vechicle(a,b),high(c) void show() Vechicle:show(); couthigh:highendl; ; class Car:public Vechicle protected: int seatnum; public: Car() Car(double a,double b,int c):Vechicle(a,b),seatnum(c) void show() Vechicle:show(); coutseatnum: seatnumendl; ; class Motocycle:public Car, Bicycle public: Motocycle(double a,double b,int c,double d):Car(a,b,c),Bicycle(a,b,d) void show() Bicycle:show(); coutseatnum:seatnumendl; ; int main() coutMotocycle

温馨提示

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

评论

0/150

提交评论