C++习题第07章 继承和派生 下载本文

第3章

1.选择题

C++的控制语句

(1)B (2)A (3)A (4)C (5)A 2.判断题 (1)错

(2)对 (3)对 (4)错 (5)错

3.读程序写结果

(1)

1 2 2 3 3 3

4 4 4 4 5 5 5 5 5 (2)

1 1 2 1 1 2 3 2 1

1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 (3) j的值为0; i的值为2;

4.编程题

(略)

第4章

1. 填空题

函数

(1)void

(2)静态全局变量,static (3)函数重载 (4)inline (5)递归函数

(6)宏定义命令,文件包含命令,条件编译命令

2.判断题 (1)错 (6)对

(2)错 (3)错 (4)错 (5)错 (7)错 (8)错 (9)对 (10)对

3.读程序写结果 (1)

x=7,y=4

x=9,y=5

(2) 34.56 101 (3) 16 22 28 (4)

12 15 18 21 24

(5)

2,1,4,1,3,2,1, 4.简答题 5.编程题

(略) (略)

第5章

1.选择题

构造数据类型

(1)C (2)D (3)A (4)B (5)C 2.判断题 (1)错

(2)对 (3)对 (4)错 (5)错

3.读程序写结果 (1)

153

(2)

42

2 5 6 8 10

(3)

65535,21

(4)

4 19

(5)

6904

(6)

4 3 2 1 0

4.编程题 (略)

第6章

1.填空题

类和对象

(1) 类,对象,类

(2) 数据成员,成员函数 (3) 不能

(4) private,protected,public,private (5) 成员函数 (6) friend

(7) 类名,作用域运算符

(8) 对象名.成员名,指针变量名->成员名,(*指针变量名).成员名 (9) 构造,析构,构造,析构 (10)常量数据,引用数据

(11)全局,数据类型,所属的类 (12)常成员,只读 (13)成员,友元

(14)类数据成员,类成员函数 (15)this (16)浅拷贝 2.选择题

(1)C (2)C (3)B (4)C (5)B (6)C (7)D (8)B (9)C (10)D (11)A (12)C (13)D (14)D (15)B 3.改错题

(1)man1.salary=1000.00; 不能在类外访问类的私有成员

(2)float r=0;和float c=0; 类本身是抽象的,不能在类的定义体中给其数据成员赋值

}后缺少分号“;”

(3)成员函数void setdata(float x1,float y1,float r);没有实现 (4)构造函数名point()应与类名同名,为Point 没有头文件包含#include 4.读程序写结果题 (1)

x=0,y=0 x=100,y=200

(2)

x=100,y=200 x=1000,y=2000 t=3.14

(3)

Sta::fun2()=10 s.fun2()=11 r.a=20

(4)

Constructor1 called! x=0

Constructor2 called! x=100

Destructor called! Destructor called!

(5)

57

5.简答题 6.编程题

(略) (略)

第7章

1.填空题

继承和派生

(1)继承

(2)基类,派生类

(3)private,protected,public,private (4)不可访问,保护,公有 (5)私有 (6)单(一),多(重) (7)赋值兼容规则 (8)静态,动态 (9)抽象类 2.选择题

(1)B (2)A (3)B (4)C (5)B (6)A (7)D (8)B (9)B (10)B (11)D (12)B 3.改错题

(1)本题的错误主要是数据成员的访问权限问题:基类的私有成员在派生类中不可访问,如fb()函数中的a3=30;语句;类的私有和保护成员在类外不能访问,如main函数中的x.a2 =20;.a3=30; ,y.a2=200; ,y.a3=300; ,y.b2=2000;和y.b3=3000;语句。

(2)本题的错误主要是成员函数的访问权限问题:由于派生类Derived是基类Base的保护派生类,所以基类中的私有成员变成派生类的不可访问成员,而基类的保护和公有成员则变成派生类的保护成员。对于类的不可访问和保护成员在类外是不能访问的,故main函数中的语句obj.funl();,obj.fun2(); 和obj.fun3(); 是错误的。

4.读程序写结果题

(1)

d=110 b=190 d=110 d=110

(2)

d=110 b=190 d=110 b=90

(3)

基类B1的构造函数被调用 基类B3的构造函数被调用 基类B2的构造函数被调用 派生类D的构造函数被调用 派生类D的析构函数被调用 基类B2的析构函数被调用 基类B3的析构函数被调用 基类B1的析构函数被调用 (4)

A B C D D

(5)

A B D D

(6)

A A B D D

(7)

A B C D D

(8)

5