实验二 类及类的继承.docx
《实验二 类及类的继承.docx》由会员分享,可在线阅读,更多相关《实验二 类及类的继承.docx(10页珍藏版)》请在冰豆网上搜索。
实验二类及类的继承
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、整理上机步骤,总结经验和体会。
完成实验报告和上交程序