private:
intpassenger_load;
};
voidmain()
{
carA(30,6,10);
}
14、利用纯虚函数编写程序计算正方体、球体的表面积和体积。
定义抽象类Container作为公共基类,并在其中定义求表面积的纯虚函数surface()和体积的纯虚函数volume(),并在其中定义公共数据成员radius,此数据可作为球体半径、正方体边长。
由此抽象类派生出要描述的两个类:
即Cube、Sphere,在这两个类中都有表面积和体积的重定义版本。
#include
usingnamespacestd;
classCCt//定义抽象类CContaineer
{
protected:
doubleradius;//公共的数据成员radius
doublearea,volume;//表面积area,体积volume
public:
virtualvoidArea()=0;//求表面积的纯虚函数
virtualvoidVolume()=0;//求体积的纯虚函数
CCt(doublea,doubleb,doublec){radius=a;area=b;volume=c;}//基类的构造函数
};
classSquare:
publicCCt//派生类Square
{
public:
Square(floata,doubleb,doublec):
CCt(a,b,c){}
voidArea()//虚函数Area()
{
area=6*radius*radius;
cout<<"Square'sarea="<
}
voidVolume()//虚函数Volume()
{
volume=radius*radius*radius;
cout<<"Square'svolume="<};
classcircle:
publicCCt//派生类circle
{
public:
circle(floata,doubleb,doublec):
CCt(a,b,c)
{}//派生类circle构造函数
voidArea()
{area=4*3.14*radius*radius;
cout<<"circle'sarea="<
}
voidVolume()
{volume=3.14*radius*radius*radius*4/3;
cout<<"circle'svolume="<};
voidAreafun(CCt*p)//根据p所指向的对象不同,调用不同的派生类Area
{p->Area();}
voidVolumefun(CCt*p)//根据p所指向的对象不同,调用不同的派生类Volume
{p->Volume();}
voidmain()
{Squarer1(5,0,0);//Square的对象r1
circlec1(8,0,0);//circle的对象c1
Areafun(&r1);//调用的将是派生类Square的Area虚函数
Volumefun(&r1);//调用的将是派生类Square的Volume虚函数
Areafun(&c1);
Volumefun(&c1);
}