C面向对象程序设计答案第六章谭浩强清华大学出版社Word格式文档下载.docx
《C面向对象程序设计答案第六章谭浩强清华大学出版社Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C面向对象程序设计答案第六章谭浩强清华大学出版社Word格式文档下载.docx(6页珍藏版)》请在冰豆网上搜索。
{Cylindercy1(3.5,6.4,5.2,10);
cout<
<
"
\noriginalcylinder:
\nx="
cy1.getX()<
y="
cy1.getY()<
r="
<
cy1.getRadius()<
h="
cy1.getHeight()<
\narea="
cy1.area()
volume="
cy1.volume()<
endl;
cy1.setHeight(15);
cy1.setRadius(7.5);
cy1.setPoint(5,5);
\nnewcylinder:
\n"
cy1;
Point&
pRef=cy1;
\npRefasapoint:
pRef;
Circle&
cRef=cy1;
\ncRefasaCircle:
cRef;
return0;
}
3:
解法一
classPoint
{public:
Point(floata,floatb):
x(a),y(b){}
~Point(){cout<
executingPointdestructor"
private:
floatx;
floaty;
};
classCircle:
publicPoint
Circle(floata,floatb,floatr):
Point(a,b),radius(r){}
~Circle(){cout<
executingCircledestructor"
floatradius;
{Point*p=newCircle(2.5,1.8,4.5);
deletep;
3:
解法二
Circle(inta,intb,intr):
Circle*pt=newCircle(2.5,1.8,4.5);
deletept;
解法三
virtual~Point(){cout<
Circle(floata,floatb,floatr):
virtual~Circle(){cout<
voidmain()
4:
//定义抽象基类Shape
classShape
virtualdoublearea()const=0;
//纯虚函数
//定义Circle类
publicShape
Circle(doubler):
radius(r){}//结构函数
virtualdoublearea()const{return3.14159*radius*radius;
//定义虚函数
protected:
doubleradius;
//半径
//定义Rectangle类
classRectangle:
Rectangle(doublew,doubleh):
width(w),height(h){}//结构函数
virtualdoublearea()const{returnwidth*height;
}//定义虚函数
doublewidth,height;
//宽与高
classTriangle:
Triangle(doublew,doubleh):
width(w),height(h){}//结构函数
virtualdoublearea()const{return0.5*width*height;
}//定义虚函数
//宽与高
//输出面积的函数
voidprintArea(constShape&
s)
{cout<
s.area()<
}//输出s的面积
{
Circlecircle(12.6);
//建立Circle类对象circle
areaofcircle="
;
printArea(circle);
//输出circle的面积
Rectanglerectangle(4.5,8.4);
//建立Rectangle类对象rectangle
areaofrectangle="
printArea(rectangle);
//输出rectangle的面积
Triangletriangle(4.5,8.4);
//建立Triangle类对象
areaoftriangle="
printArea(triangle);
//输出triangle的面积
5:
//纯虚函数
//定义Circle(圆形)类
//定义Square(正方形)类
classSquare:
Square(doubles):
side(s){}//结构函数
virtualdoublearea()const{returnside*side;
}//定义虚函数
doubleside;
//定义Rectangle(矩形)类
//定义Trapezoid(梯形)类
classTrapezoid:
Trapezoid(doublet,doubleb,doubleh):
top(t),bottom(t),height(h){}