210723李玉花实验报告五类与对象.docx

上传人:b****6 文档编号:4543487 上传时间:2022-12-06 格式:DOCX 页数:22 大小:61.15KB
下载 相关 举报
210723李玉花实验报告五类与对象.docx_第1页
第1页 / 共22页
210723李玉花实验报告五类与对象.docx_第2页
第2页 / 共22页
210723李玉花实验报告五类与对象.docx_第3页
第3页 / 共22页
210723李玉花实验报告五类与对象.docx_第4页
第4页 / 共22页
210723李玉花实验报告五类与对象.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

210723李玉花实验报告五类与对象.docx

《210723李玉花实验报告五类与对象.docx》由会员分享,可在线阅读,更多相关《210723李玉花实验报告五类与对象.docx(22页珍藏版)》请在冰豆网上搜索。

210723李玉花实验报告五类与对象.docx

210723李玉花实验报告五类与对象

宁夏师范学院数学与计算机科学学院

《面向对象程序设计(C++)》实验报告

实验序号:

 5         实验项目名称:

构造函数与析构函数

学  号

姓  名

专业班级

2014级计算机科学与技术

实验地点

文科楼229

指导教师

马学梅

时间

2015.5.21

一、实验目的及要求

1、掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数;

2、掌握构造函数和析构函数的执行过程及调用顺序;

3、掌握对象数组、对象指针的定义及使用方法;

4、正确理解对象的赋值及对象的复制,掌握对象的赋值及复制方法;

5、继续学习使用VC6.0的Debug调试功能,观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序

二、实验设备(环境)及要求

硬件:

PC(P

以上,128M以上内存)、因特网接入;

软件:

WindowsXP操作系统或更高版本、Office2003或更高版本、VisualC++6.0。

实验学时:

2学时

其他要求:

对实验例题和例题操作步骤进行阅读,并实现;验证题目和设计题目尽量完成;任选一个设计题目写实验报告

三、实验内容与步骤

说明:

对下述实验内容给出实验结果并分析总结。

【验证题目】

1.验证教材第9章例题9.2至9.10

第九章的例二

#include

usingnamespacestd;

classBox

{

public:

Box(int,int,int);

intvolume();

private:

intheight;

intwidth;

intlength;

};

Box:

:

Box(inth,intw,intlen)

{

height=h;

width=w;

length=len;

}

intBox:

:

volume()

{

return(height*length*width);

}

intmain()

{

Boxbox1(12,25,30);

cout<<"Thevolumeofbox1is"<

Boxbox2(15,30,21);

cout<<"Thevolumeofbox2is"<

return0;

}

运行结果:

9.3

#include

usingnamespacestd;

classBox

{

public:

Box();

Box(inth,intw,intlen):

height(h),width(w),length(len)

{}

intvolume();

private:

intheight;

intwidth;

intlength;

};

Box:

:

Box()

{

height=10;

width=10;

length=10;

}

intBox:

:

volume()

{

return(height*width*length);

}

intmain()

{

Boxbox1;

cout<<"Thevolumeofbox1is"<

Boxbox2;

cout<<"Thevolumeofbox2is"<

return0;

}

9.4

#include

usingnamespacestd;

classBox

{

public:

Box(inth=10,intw=10,intlen=10);

intvolume();

private:

intheight;

intwidth;

intlength;

};

Box:

:

Box(inth,intw,intlen)

{

height=h;

width=w;

length=len;

}

intBox:

:

volume()

{

return(height*width*length);

}

intmain()

{

Boxbox1;

cout<<"Thevolumeofbox1is"<

Boxbox2(15);

cout<<"Thevolumeofbox2is"<

Boxbox3(15,30);

cout<<"Thevolumeofbox3is"<

Boxbox4(15,30,20);

cout<<"Thevolumeofbox4is"<

return0;

}

9.5

#include

#include

usingnamespacestd;

classStudent

{

public:

Student(intn,stringnam,chars)

{

num=n;

name=nam;

sex=s;

cout<<"Constructorcalled."<

}

~Student()

{

cout<<"Destructorcalled."<

}

voiddisplay()

{

cout<<"num:

"<

cout<<"name:

"<

cout<<"sex:

"<

}

private:

intnum;

stringname;

charsex;

};

intmain()

{

Studentstud1(10010,"Wang_li",'f');

stud1.display();

Studentstud2(10011,"Zhang_fang",'m');

stud2.display();

return0;

}

9.6

#include

usingnamespacestd;

classBox

{

public:

Box(inth=10,intw=12,intlen=15):

height(h),width(w),length(len){}

intvolume();

private:

intheight;

intwidth;

intlength;

};

intBox:

:

volume()

{

return(height*width*length);

}

intmain()

{

Boxa[3]={

Box(10,12,15),

Box(15,18,20),

Box(16,20,26),

};

cout<<"volumeofa[0]is"<

cout<<"volumeofa[1]is"<

cout<<"volumeofa[2]is"<

return0;

}

9.7

#include

usingnamespacestd;

classTime

{

public:

Time(int,int,int);

inthour;

intminute;

intsec;

voidget_time();

};

Time:

:

Time(inth,intm,ints)

{

hour=h;

minute=m;

sec=s;

}

voidTime:

:

get_time()

{

cout<

"<

"<

}

intmain()

{

Timet1(10,13,56);

int*p1=&t1.hour;

cout<<*p1<

t1.get_time();

Time*p2=&t1;

p2->get_time();

void(Time:

:

*p3)();

p3=&Time:

:

get_time;

p3=&Time:

:

get_time;

(t1.*p3)();

return0;

}

9.8

#include

usingnamespacestd;

classTime

{

public:

Time(int,int,int);

inthour;

intminute;

intsec;

};

Time:

:

Time(inth,intm,ints)

{

hour=h;

minute=m;

sec=s;

}

voidfun(Time&t)

{

t.hour=18;

}

intmain()

{

Timet1(10,13,56);

fun(t1);

cout<

return0;

}

9.9

#include

usingnamespacestd;

classBox

{

public:

Box(int=10,int=10,int=10);

intvolume();

private:

intheight;

intwidth;

intlength;

};

Box:

:

Box(inth,intw,intlen)

{

length=h;

width=w;

length=len;

}

intBox:

:

volume()

{

return(height*width*length);

}

intmain()

{

Boxbox1(15,30,25),box2;

cout<<"Thevolumeofbox1is"<

box2=box1;

cout<<"Thevolumeofbox2is"<

return0;

}

在运行的过程中出现了以下的错误,导致运行结果也出现了错误。

其运行结果是:

norelevantchangesdetected//没有相关的变化检测

 

9.10的程序:

#include

usingnamespacestd;

classBox

{

public:

Box(int,int);

intvolume();

staticintheight;

intwidth;

intlength;

};

Box:

:

Box(intw,intlen)

{

width=w;

length=len;

}

intBox:

:

volume()

{

return(height*width*length);

}

intBox:

:

height=10;

intmain()

{

Boxa(15,20),b(20,30);

cout<

cout<

cout<

:

height<

cout<

return0;

}

运行结果:

2.分析下面的程序,写出其运行时的输出结果。

#include

usingnamespacestd;

classDate

{public:

Date(int,int,int);

Date(int,int);

Date(int);

Date();

voiddisplay();

private:

intmonth;intday;intyear;

};

Date∷Date(intm,intd,inty):

(指针调用)month(m),day(d),year(y){}//参数初始表方式初始化数据成员

Date∷Date(intm,intd):

month(m),day(d){year=2014;}

Date∷Date(intm):

month(m){day=1;year=2014;}

Date∷Date(){month=1;day=1;year=2014;}

voidDate∷display(){cout<

intmain()

{Dated1(4,17,2014);

Dated2(12,30);

Dated3(10);

Dated4;

d1.display();

d2.display();

d3.display();

d4.display();

return0;

}

对此程序的分析:

在这个程序之中使用了构造函数,而在使用构造函数中使用默认函数参数是方便并且有效的。

再此题中在构造函数进行了声明,然而并未给出默认值,而是通过对函数的Date进行初始化中进行有效的赋值之外,在main函数中添加了默认值。

3.定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。

其中,rank为枚举类型CPU—Rank,定义为enumCPU—Rank{Pl=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。

程序如下,请按照要求完成空白部分的填写。

运行程序并给出运行结果

//lab5_1.cpp

#include

usingnamespacestd;

enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};//枚举类型

classCPU

{private:

CPU_Rankrank;

intfrequency;

doublevoltage;

public:

//定义一个构造函数,使之能实现main函数中各

对象的成员数据的初始化

~CPU(){cout<<"析构了一个CPU!

"<

CPU_RankGetRank()const{returnrank;}

intGetFrequency()const{returnfrequency;}

floatGetVoltage()const{returnvoltage;}

voidRun(){cout<<"CPU开始运行!

"<

voidStop(){cout<<"CPU停止运行!

"<

};

intmain()

{CPUa1;

CPUa2(P6,300,2.8);

cout<<"Rank:

"<

cout<<"Frequency:

"<

cout<<"Voltage:

"<

a.Run();

a.Stop();

return0;

}

#include

usingnamespacestd;

enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};

classCPU

{

private:

CPU_Rankrank;

intfrequency;

doublevoltage;

public:

CPU()

{

rank;

frequency=300;

voltage=3.8;

}

CPU_RankGetRank()const{returnrank;}

intGetFrequency()const{returnfrequency;}

floatGetVoltage()const{returnvoltage;}

voidRun(){cout<<"CPU开始运行!

"<

voidStop(){cout<<"CPU停止运行!

"<

};

intmain()

{CPUa1;

CPUa2(P6,300,2.8);

cout<<"Rank:

"<

cout<<"Frequency:

"<

cout<<"Voltage:

"<

a.Run();

a.Stop();

return0;

}

【设计题目】

1.建立一个名为Student的类,该类有4个私有数据成员:

学生姓名、学号、性别、年龄;两个公有成员函数:

一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。

要求:

编写一个主函数,定义一个学生对象并以三种不同的方式(一般、参数初始化表、默认参数)实现初始化,然后调用成员函数在屏幕输出学生信息,体现出析构函数的调用。

程序对于一般情况进行初始化的程序:

#include

#include

usingnamespacestd;

classStudent

{

private:

stringname;

intnum;

charsex;

intage;

public:

Student(string,int,char,int);

voiddisplay();

};

Student:

:

Student(stringnam,intn,chars,inta)

{

name=nam;

num=n;

sex=s;

age=a;

}

voidStudent:

:

display()

{

cout<<"name"<<""<

cout<<"num"<<""<

cout<<"sex"<<""<

cout<<"age"<<""<

}

intmain()

{

Studentstud1("bai_bai",10010,'f',18);

stud1.display();

return0;

}

使用参数初始化的表的程序:

#include

#include

usingnamespacestd;

classStudent

{

public:

Student(stringnam,intn,chars,inta);

voiddisplay();

private:

stringname;

intnum;

charsex;

intage;

};

Student:

:

Student(stringnam,intn,chars,inta):

name(nam),num(n),sex(s),age(a){}

voidStudent:

:

display()

{

cout<<"name"<<""<

cout<<"num"<<""<

cout<<"sex"<<""<

cout<<"age"<<""<

}

intmain()

{

Studentstud1("白白",10010,'g',18);

stud1.display();

return0;

}

使用默认参数的程序:

#include

#include

usingnamespacestd;

classStudent

{

private:

stringname;

intnum;

charsex;

intage;

public:

Student(stringnam="bai_bai",intn=10010,chars='g',inta=18);

voiddisplay();

};

Student:

:

Student(stringnam,intn,chars,inta)

{

name=nam;

num=n;

sex=s;

age=a;

}

voidStudent:

:

display()

{

cout<<"name"<<""<

cout<<"num"<<""<

cout<<"sex"<<""<

cout<<"age"<<""<

}

intmain()

{

Studentstud1;

stud1.display();

return0;

}

分析:

对于这道题而言,函数的初始化使用了三种方法,其中包括一般,使用参数,还有就是使用函数的默认值。

对于这几种方法而言,其中不可缺少的始终是声明、定义和调用三部分。

析构函数的使用有什么好处。

2.建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。

#include

usingnamespacestd;

classStudent

{

public:

Student(intn,floats):

num(n),score(s){}

intnum;

floatscore;

};

intmain()

{

Studentstud[5]={Student(101,64aaa),Student(102,85),Student(103,86),Student(104,75),Student(105,95)};

voidmax(Student*);

Student*p=&stud[0];

max(p);

return0;

}

voidmax(Student*arr)

{

floatmax_score=arr[0].score;

intk=0;

for(inti=1;i<5;i++)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1