实验二 类及类的继承.docx

上传人:b****5 文档编号:7293885 上传时间:2023-01-22 格式:DOCX 页数:10 大小:16.64KB
下载 相关 举报
实验二 类及类的继承.docx_第1页
第1页 / 共10页
实验二 类及类的继承.docx_第2页
第2页 / 共10页
实验二 类及类的继承.docx_第3页
第3页 / 共10页
实验二 类及类的继承.docx_第4页
第4页 / 共10页
实验二 类及类的继承.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

实验二 类及类的继承.docx

《实验二 类及类的继承.docx》由会员分享,可在线阅读,更多相关《实验二 类及类的继承.docx(10页珍藏版)》请在冰豆网上搜索。

实验二 类及类的继承.docx

实验二类及类的继承

 

C++与数据结构

实验指导书

实验二类及类的继承

一、实验目的

1、熟悉并掌握类的概念及定义类的格方法;

2、掌握类对象的定义;

3、掌握构造函数和析构函数的含义与作用以及定义方式和实现方法;

4、理解继承的含义,掌握派生类的定义方法和实现;

5、理解多继承的概念及多继承中构造与析构的应用。

二、实验内容

1、定义一个学生类,数据成员有学号、姓名、年龄,并使用成员函数实现如下功能:

(1)使用成员函数实现输入、输出;

(2)使用构造函数和析构函数实现对数据的输入、输出;

编写主函数使用这个类,实现对学生数据的赋值和输出。

#include

#include

usingnamespacestd;

classstudent{

private:

intnumber;

stringname;

intage;

public:

student(inta,stringb,intc)

{

number=a;name=b;age=c;

cout<<"学号:

"<

"<

"<

}

~student()

{

cout<<"学号:

"<

"<

"<

}

};

intmain()

{

students1(1412010708,"雷宇",20);

students2(1412010709,"李嘉锡",18);

students3(1412010710,"刘奇瑞",19);

return0;

}

2、定义日期类Date。

要求:

(1)可以设置日期;

(2)日期加一天操作;

(3)输出函数,输出格式为“XXXX年XX月XX日”;

(4)编写主函数,定义对象,完成相应功能。

#include

usingnamespacestd;

//判断year是否是闰年

boolisLeapYear(intyear)

{

return(year%400==0||(year%4==0&&year%100!

=0));

}

//日期类

classDate{

private:

intyear;

intmonth;

intday;

public:

Date()

{}

Date(intyear,intmonth,intday)

{this->year=year;

this->month=month;

this->day=day;

}

//1.设置日期

voidsetDate(intyear,intmonth,intday)

{this->year=year;

this->month=month;

this->day=day;

}

//2.在当前日期的基础上增加一天

voidaddOneDay()

{day++;

switch(month){

//a.讨论1,3,5,7,8,10月份

case1:

case3:

case5:

case7:

case8:

case10:

{if(day>31)

{day-=31;

month++;

}

break;

}

//b.讨论12月份

case12:

{if(day>31)

{day=1;

month=1;

year++;

}

break;

}

//c.讨论4,6,9,11月份

case4:

case6:

case9:

case11:

{if(day>30)

{day-=30;

month++;

}

break;

}

//d.讨论2月份

case2:

{if(isLeapYear(year))

{if(day>29)

{day-=29;

month++;

}

}

else

{

if(day>28)

{day-=28;

month++;

}

}

break;

}

default:

cout<<"error!

";

{break;

}

}

}

 

//3.输出函数,输出格式为:

XXXX年XX月XX日,如2010年4月11日

voiddisplay()

{

cout<

}

};

//输入函数,输入格式为:

XXXXXXXX

DateInputDate()

{

intyear,month,day;

Datenow=Date();

cin>>year>>month>>day;

now.setDate(year,month,day);

returnnow;

}

 

voidmain()

{

Datenow=Date();

cout<<"请输入日期(XXXXXXXX)";

now=InputDate();

cout<<"日期:

";

now.display();

now.addOneDay();

cout<<"一天后:

";

now.display();

//设置日期:

北京奥运会

cout<<"设置新日期"<

now.setDate(2008,8,8);

cout<<"新日期:

";

now.display();

now.addOneDay();

cout<<"一天后:

";

now.display();

}

3、编写一个程序计算出球、圆柱和圆锥的表面积和体积。

要求:

(1)定义一个基类,至少含有一个数据成员半径,并设为保护成员;

(2)定义基类的派生类球、圆柱、圆锥,都含有求表面积和体积的成员函数和输出函数;

(3)编写主函数,求球、圆柱、圆锥的表面积和体积。

 

#include

#include

usingnamespacestd;

constdoublepi=3.1415926;

classcircle//基类圆

{

public:

circle(doublerad){r=rad;}

protected:

doubler;

};

classball:

publiccircle//球类

{

public:

ball(doublerad):

circle(rad){}

voidcom_surface(){surface=4*pi*r*r;}

voidcom_volume(){volume=4*pi*r*r*r/3;}

doubleget_surface(){returnsurface;}

doubleget_volume(){returnvolume;}

private:

doublesurface;

doublevolume;

};

classtaper:

publiccircle//圆锥类

{

public:

taper(doublerad,doublelength):

circle(rad)

{

l=length;

}

voidcom_surface(){surface=pi*l*r+pi*r*r;}

voidcom_volume(){volume=pi*r*r*sqrt(l*l-r*r)/3;}

doubleget_surface(){returnsurface;}

doubleget_volume(){returnvolume;}

private:

doublel;//圆锥侧长

doublesurface;

doublevolume;

};

classcolumn:

publiccircle//圆柱类

{

public:

column(doublerad,doublehigh):

circle(rad)

{

h=high;

}

voidcom_surface(){surface=pi*r*r*2+2*pi*r*h;}

voidcom_volume(){volume=pi*r*r*h;}

doubleget_surface(){returnsurface;}

doubleget_volume(){returnvolume;}

private:

doubleh;//圆柱高

doublesurface;

doublevolume;

};

voidmain()

{

ballb(3);

_surface();

_volume();

cout<<"该球的表面积是:

"<

cout<<"该球的体积是:

"<

cout<<"------------------------------------"<

tapert(3,5);

_surface();

_volume();

cout<<"该圆锥的表面积是:

"<

cout<<"该圆锥的体积是:

"<

cout<<"------------------------------------"<

columnc(3,5);

_surface();

_volume();

cout<<"该圆柱的表面积是:

"<

cout<<"该圆柱的体积是:

"<

}

4、输入以下程序,分析运行结果。

#include

usingnamespacestd;

classB1

{

public:

B1(inti)

{

b1=i;

cout<<"构造函数B1."<

voidprint(){cout<

private:

intb1;

};

classB2

{

public:

B2(inti)

{

b2=i;

cout<<"构造函数B2."<

voidprint(){cout<

private:

intb2;

};

classB3

{

public:

B3(inti)

{

b3=i;

cout<<"构造函数B3."<

intgetb3(){returnb3;}

private:

intb3;

};

classA:

publicB2,publicB1

{

public:

A(inti,intj,intk,intl):

B1(i),B2(j),bb(k)

{

a=l;

cout<<"构造函数A."<

voidprint()

{

B1:

:

print();

B2:

:

print();

cout<

private:

inta;

B3bb;

};

voidmain()

{

Aaa(1,2,3,4);

aa.print();

}

修改上面的4个类,添加析构函数,在析构函数中输出各私有数据成员的值。

并分析结果。

三、实验要求

1、写出程序,并调试程序,要给出测试数据和实验结果。

2、整理上机步骤,总结经验和体会。

完成实验报告和上交程序

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

当前位置:首页 > 高等教育 > 理学

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

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