习题7及其解答(第二版).docVIP

  • 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)

1亿VIP精品文档

相关文档