returnos;
}
//前置自增和后置自增成员函数的定义
Time&Time:
:
operator++()//前自增运算符函数的定义
{
++second;
if(second>=60)
{
second-=60;
++minute;
if(minute>=60)
{
minute-=60;
++hour;
if(hour>=24)
hour-=24;
}
}
return(*this);
}//前自增运算符函数的定义结束
TimeTime:
:
operator++(int)//后自增运算符函数的定义
{
Timetemp(*this);//复制构造临时对象以保存当前对象
++(*this);//应用前自增运算符
returntemp;//返回临时对象作为后自增运算的结果
}//后自增运算符函数的定义结束
//前置自减和后置自减成员函数的定义
10、定义堆栈类模板Stack(先进后出),栈的大小由使用者确定。
数据成员用数组来实现,要求该类模板对外提供如下二种基本操作:
(1)push入栈;
(2)pop出栈。
//1305_2.cpp
#include
usingnamespacestd;
template
classStack
{
Tx[size];
intcurrent;
public:
Stack(){current=0;}//默认构造函数的定义
//请在本行下面写出push函数的定义
//请在本行下面写出pop函数的定义
};
请按照注释行中指定的位置分别写出这两个函数的定义,包括函数的返回值类型、形参类型和名称,以及适当的函数体,即实现函数功能的语句。
11、编写源程序文件1304_1.cpp,在其中定义用于表示日期的类Date(源代码清单列在下面),但类Date的定义并不完整。
请按要求完成下列操作,将类Date的定义补充完整:
yY+2;_`CH
(1)定义私有数据成员year,month和day分别用于表示年、月、日,它们都是int型的数据。
请在注释“//**1**”='FEC-f_95 之后添加适当的语句。
?
#'_qY6^_
(2)完成默认构造函数Date的定义,使Date对象的默认值为:
year=1,month=1,day=1。
请在注释“//*Sm__p+}-*2**”之后添加适当的语句。
Am0$U_eSZ
(3)完成重载构造函数Date(inty,intm,int _:
z~_Pd)的定义,把数据成员year,month和day分别初始化为参数y,m,d的值。
请在注释“//**3*_r_a_3_WLK*”之后添加适当的语句。
I4hr_5__M3
(4)完成成员函数print在类外的定义,使其以“年-月-日”的格式将Date对象的值输出到屏幕上(1949-10-1)。
请在注释“//**4
__*V_c}**”之后添加适当的语句。
_ubgq_8_@;
注意:
除在指定位置添加语句之外,请不要改动程序中的其他内容,1304_1.cpp源程序文件清单如下:
//1304_1.cpp
#include
classDate
{
public:
//**2**
Date(inty,intm,intd)
{
//**3**
}
voidprint()const;
private:
//datemembers
//**1**
};
voidDate:
:
print()const
{
//**4**
}
intmain()
{
Datenational_day(1949,10,1);
national_day.print();
return0;
}
%_&{>oEQ
12、程序由FuXi_12.cpp和FuXi_12.h两个源文件组成,文件FuXi_12.cpp的内容如下:
//FuXi_12.cpp
#include
#include"FuXi_12.h"//使用自定义的类族
usingnamespacestd;
doubletotal(Shape*p[],intn)
{
doublesum=0.0;
for(inti=0;isum+=p[i]->area();//通过基类指针调用虚函数area
returnsum;
}
intmain()
{
Shape*pShape[3]={//定义和初始化基类指针数组
newTriangle(10.0,10.0),
newSquare(10.0),
newCircle(10.0)
};
cout<<"三个图形的总面积为:
"
<<return0;
}
其中,全局函数total()用以求不同形状的图形面积总和。
程序输出结果应为:
三个图形的总面积为:
464.159
为了获得此输出结果,请在文件FuXi_12.h中写出图形类族的定义,要求:
a)定义一个抽象基类Shape,在其中声明一个用来求面积的纯虚函数area();
b)定义三角形类Triangle、正方形类Square、圆形类Circle为Shape的派生类,继承方式都为public,且Triangle的数据成员为底和高,Square的数据成员为边长,Circle的数据成员为半径;
c)在各派生类中具体定义或实现求面积的虚函数area(),并定义适当的构造函数。
文件FuXi_12.h还只有三行注释,请在注释行下面追加各个类的定义:
//FuXi_12.h
//自定义一个图形类族:
//由抽象基类Shape派生出三角形类Triangle,正方形类Square和圆形类Circle