继承与多态性习题参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
继承与多态性习题参考答案
————————————————————————————————作者:————————————————————————————————日期:
C++程序设计语言习题及实验指导
第8章继承与多态性习题参考答案
8.3 习题
8.3.1 选择题
题号 1 2 3 4 5 6 7 8 9 10 答案 C D A D A B C B D D 题号11 12 13 14 15 16 17 18 19 20 答案 D D A C B C C C A C
8.3.2 填空题
1.(1) a、b、c、x、y、z (2) b、y (3) c、z (4) a、x (5) b、c、x、y、z
(6) b、y (7) y (8) b、c、z (9) a、x (10) b、c、x、y、z (11) y
(12) y (13) z (14) a、b、c、x (15) b、c、x、y、z (16) y 2.私有
3.抽象
4.虚基
5.(1) 基类(2) 对象
6.(1) 静态(2) 编译(3) 虚函数
7.(1) 2 1 (2) 0 5
8.(1) 100 200 300 30 (2) 10 100 (3) 20 200 9.(1) 5 10 (2) end. (3) 20 10
10.(1) classA classB (2) end. (3) ~classB ~classA 11.(1) 10 (2) build B (3) build C (4) release A
12.(1) class B (2) class C (3) class D (4) 5
13.(1) 5 5 (2) 20 20
14.(1) 10 (2) 10 20
15.(1) 1 (2) 3 (3) 5 (4) 100 10
16.(1) B::f() (2) B::fun() (3) A::f() (4) B::fun()
17.(1) 姓名陈涛年薪6.8万元。(2) 姓名李原(3) 姓名李原月工资4000元18.(1) 110 (2) 2220
19.(1) protected 或public (2) Base1(s1),Base2(s2) 或Base2(s2),Base1(s1)
(3) Base1::str (4) test.print()
20.(1) virtual void show()=0 (2) C(int,int,int) (注:参数可有任一名称)
(3) b1(y) (4) &t
8.3.3 编程题
1.求长方形的面积和长方体的表面积、体积
#include
class Rectangle{
protected:
float L; // 长方形的长
float W; // 长方形的宽
float area; // 长方形的面积
public:
Rectangle(float L1,float W1)
{
L=L1;
W=W1;
}
void function() { area=L*W; }
void show()
{
cout<<"长为"< } }; class Cuboid:public Rectangle{ float H; // 长方体的高 float volume; // 长方体的体积 public: Cuboid(float a,float b,float c):Rectangle(a,b) { H=c; } void function() { area=(L*W+L*H+W*H)*2; } void fun() { volume=L*W*H; } void show() { cout<<"长为"< } }; void main() { Rectangle r(2,3); r.function(); r.show(); Cuboid c(2,3,4); c.function(); c.fun(); c.show(); } 2.产生并输出圆桌信息 #include #include class Circle{ protected: double radius; double area; public: Circle(double r) { radius=r; } }; class Table{ protected: double height; public: Table(double h) { height=h; } }; class Roundtable:public Table,public Circle { char *color; public: Roundtable(double h,double r,char c[]):Circle(r),Table(h) { color=new char[strlen(c)+1]; strcpy (color, c); } void fun() { area=3.14*radius*radius; } void show() { cout<<"高度:"< cout<<"面积:"< cout<<"颜色:"< } ~Roundtable() { delete []color; } }; void main() { Roundtable rt(0.75,1.1,"黑色"); rt.fun(); rt.show(); } 3.计算企业的经营税 #include #include class Tax{ protected: char name[50]; // 企业名称 double income; // 经营收入 double taxes; // 税金 public: Tax(char *n,double in) { strcpy(name,n); income=in; } virtual void fun()=0;