习题7及其解答(第二版)(共8页).doc
《习题7及其解答(第二版)(共8页).doc》由会员分享,可在线阅读,更多相关《习题7及其解答(第二版)(共8页).doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上第7章 继承习题77.1 选择题1在c+中,类之间的继承关系具有( c )。(a) 自反性 (b) 对称性 (c) 传递性 (d) 反对称性2下列关于类的继承描述中,( d )是正确的。(a) 派生类公有继承基类时,可以访问基类的所有数据成员,调用所有成员函数(b) 派生类也是基类,所以它们是等价的(c) 派生类对象不会建立基类的私有数据成员,所以不能访问基类的私有数据成员(d) 一个基类可以有多个派生类,一个派生类可以有多个基类3当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( a )。(a) public成员(b)private成员(c) pro
2、tected成员(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
3、)。(a) 在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问(b) 在基类定义的protected成员在私有继承的派生类中可见(c) 在基类定义的静态成员在私有继承的派生类中可见(d) 访问声明可以在公有继承派生类中把基类的public成员声明为private成员8在c+中,可以被派生类继承的函数是( a )。(a) 成员函数(b)构造函数(c) 析构函数(d)友员函数9在创建派生类对象时,构造函数的执行顺序是( d )。(a) 对象成员构造函数、基类构造函数、派生类本身的构造函数(b) 派生类本身的构造函数、基类构造函数、对象成员构造函数(c) 基类构造函数、派生类本身
4、的构造函数、对象成员构造函数(d) 基类构造函数、对象成员构造函数、派生类本身的构造函数10当不同的类具有相同的间接基类时,有特点( c )。(a) 各派生类对无法按继承路线产生自己的基类版本(b) 为了建立惟一的间接基类版本,应该声明间接基类为虚类(c) 为了建立惟一的间接基类版本,应该声明派生类虚继承基类(d) 一旦声明虚继承,基类的性质就改变了,不能再定义新的派生类7.2 阅读下列程序,写出执行结果1#include class Base public: void get( int i,int j,int k,int l ) a = i; b = j; x = k; y = l; voi
5、d 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
6、 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 x = 70 y = 80a = 10 b = 20 x = 30 y = 40a = 30 b = 40 x = 50 y = 60u = 120 v = 702. #include class Base1
7、 public: Base1( int i ) cout 调用基类Base1的构造函数: i endl ; ;class Base2 public: Base2( int j ) cout 调用基类Base2的构造函数: j endl ; ; class A: public Base1, public Base2 public:A( int a, int b, int c, int d ) : Base2(b), Base1(c), b2(a), b1(d) cout 调用派生类A的构造函数: a+b+c+d endl; private: Base1 b1; Base2 b2; ; void
8、main() A obj( 1, 2, 3, 4 ); 【答案】调用基类BASE1的构造函数:3 调用基类BASE2的构造函数:2 调用基类BASE1的构造函数:4调用基类BASE2构造函数:1调用派生类A的构造函数:103 #include class A public: A(int i, int j) a=i; b=j ; void Add(int x, int y) a+=x; b+=y; void show() cout(a)t(b)n; private: int a, b;class B : public A public:B(int i, int j, int m, int n):
9、A(i,j),x(m),y(n)void show() cout(x)t(y)n; void fun() Add(3,5); void ff() A:show(); private: int x, y ;void main() A a(1,2); a.show(); B b(3,4,5,6); b.fun(); b.A:show(); b.show(); b.ff();【答案】(1) (2)(6) (9)(5) (6)(6) (9)4 #includeclass A public: A(const char *s)coutsendl; A();class B : virtual public
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 及其 解答 第二
限制150内