- 80
- 0
- 约6.43千字
- 约 8页
- 2017-12-20 发布于河南
- 举报
习题7及其解答(第二版)
第7章 继承
习题7
7.1 选择题
1.在c++中,类之间的继承关系具有( c )。
(a) 自反性 (b) 对称性 (c) 传递性 (d) 反对称性
2.下列关于类的继承描述中,( d )是正确的。
(a) 派生类公有继承基类时,可以访问基类的所有数据成员,调用所有成员函数
(b) 派生类也是基类,所以它们是等价的
(c) 派生类对象不会建立基类的私有数据成员,所以不能访问基类的私有数据成员
(d) 一个基类可以有多个派生类,一个派生类可以有多个基类
3.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( a )。
(a) public成员 (b)private成员 (c) protected成员 (d)友员
4.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( b )。
(a) public成员 (b)private成员 (c) protected成员 (d)友员
5.当一个派生类保护继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( c )。
(a) public成员 (b)private成员 (c) protected成员 (d)友员
6.不论派生类以何种方式继承基类,都不能直接使用基类的( b )。
(a) public 成员 (b)private成员
(c) protected成员 (d)public 成员和protected成员
7.下面描述中,错误的是( d )。
(a) 在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问
(b) 在基类定义的protected成员在私有继承的派生类中可见
(c) 在基类定义的静态成员在私有继承的派生类中可见
(d) 访问声明可以在公有继承派生类中把基类的public成员声明为private成员
8.在c++中,可以被派生类继承的函数是( a )。
(a) 成员函数 (b)构造函数 (c) 析构函数 (d)友员函数
9.在创建派生类对象时,构造函数的执行顺序是( d )。
(a) 对象成员构造函数、基类构造函数、派生类本身的构造函数
(b) 派生类本身的构造函数、基类构造函数、对象成员构造函数
(c) 基类构造函数、派生类本身的构造函数、对象成员构造函数
(d) 基类构造函数、对象成员构造函数、派生类本身的构造函数
10.当不同的类具有相同的间接基类时,有特点( c )。
(a) 各派生类对无法按继承路线产生自己的基类版本
(b) 为了建立惟一的间接基类版本,应该声明间接基类为虚类
(c) 为了建立惟一的间接基类版本,应该声明派生类虚继承基类
(d) 一旦声明虚继承,基类的性质就改变了,不能再定义新的派生类
7.2 阅读下列程序,写出执行结果
1.#include iostream.h
class Base
{ public:
void get( int i,int j,int k,int l )
{ a = i; b = j; x = k; y = l; }
void print()
{ cout a = a \t b = b \t
x = x \t y = y endl;
}
int a,b;
protected:
int x, y;
};
class A: public Base
{ public:
void get( int i, int j, int k, int l )
{ Base obj3;
obj3.get( 50, 60, 70, 80 );
obj3.print();
a = i; b = j; x = k; y = l;
u = a + b + obj3.a ; v = y - x + obj3.b;
}
void print()
{ cout a = a \t b = b \t
x = x \t y = y endl;
cout u = u \t v = v endl;
}
private:
int u, v ;
};
void main()
{ Base obj1;
A obj2;
obj1.get( 10, 20, 30, 40 );
obj2.get( 30, 40, 50, 60 );
obj1.print();
obj2.print();
}
【答案】
a = 50 b = 60
原创力文档

文档评论(0)