当前位置:首页 > 面向对象程序设计综合练习题a
D.“子类”和“父类”
5-6.派生类的成员函数可以直接访问基类的( B )成员。 A. 所有 B. 公有和保护 C. 保护和私有 D. 私有
5-7.派生类可以访问其基类的( D )。 A.公用成员 B.保护成员 C.私有派生 D.公用和保护成员
5-8.对于类中定义的成员,其隐含访问权限为( C )。 A.public B.ptotected C.private D.static
5-9.在定义一个派生类时,若不使用保留字显式地规定采用何种继承方式,则默认为( A )方式。
A. 私有继承 B. 非私有继承 C. 保护继承 D. 公用继承
5-10. 在公用继承的情况下,基类成员在派生类中的访问权限( B )
A.受限制 B.保持不变 C.受保护 D.不受保护 5-11.对于公用继承,基类的公有和保护成员在派生类中将( D )成员。
A. 全部变成公有 B. 全部变成保护
C. 全部变成私有 D. 仍然相应保持为公有和保护
5-14.在公用继承的情况下,基类非私有成员在派生类中的访问权限( B )。
A.受限制 B.保持不变 C.受保护 D.不受保护
5-15.对于公有继承,基类中的私有成员在派生类中将 ( C )。 A. 能够直接使用成员名访问 B. 能够通过成员运算符访问
C. 仍然是基类的私有成员 D. 变为派生类的私有成员
5-16.当保护继承时,基类的( B )在派生类中成为保护成员,在类作用域外不能够通过派生类的对象来直接访问该成员。
A. 任何成员 B.公有成员和保护成员
C. 保护成员和私有成员
- 13 -
D.私有成员
5-17.下面描述中,表达错误的是( B )。
A.公用继承时基类中的public成员在派生类中仍是public的 B.公用继承时基类中的private成员在派生类中仍是private的
C.公用继承时基类中的protected成员在派生类中仍是
protected的
D.私有继承时基类中的public成员在派生类中是private的 5-18.从一个基类派生出的各个类的对象之间( C )。 A.共享所有数据成员,每个对象还包含基类的所有属性 B.共享部分数据成员,每个对象还包含基类的所有属性
C.不共享任何数据成员,但每个对象还包含基类的所有属性 D.共享部分数据成员和函数成员
5-19.建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为( C )的构造函数。
A. 自己所属类、对象成员所属类、基类 B. 对象成员所属类、基类、自己所属类 C. 基类、对象成员所属类、自己所属类 D. 基类、自己所属类、对象成员所属类 5-20.假设定义了以下的类: Class A {public: int a;
viod display(); }; Class B {public: int a;
viod display(); };
Class C: Class A, Class b {public: int b;
viod show(); };
如果在main函数中定义了C类对象c1,并调用基类A的数据成员a并对其赋初值3,然后成员函数display,应使用( C )语句。 A.c1.a=3; c1.display()
- 14 -
B.c1::a=3; c1::display() C.c1.A::a=3; c1.A::display() D.c1.A->a=3; c1.A->display()
5-21.当派生类中有和基类一样名字的成员时,一般来说,( B )
A. 将产生二义性
B. 派生类的同名成员将覆盖基类的成员 C. 是不能允许的
D. 基类的同名成员将覆盖派生类的成员
5-22.C++中的虚基类机制可以保证:( D )。
A. 限定基类只通过一条路径派生出派生类 B. 允许基类通过多条路径派生出派生类,派生类也就能多次继
承该基类
C. 当一个类多次间接从基类派生以后,派生类对象能保留多份
间接基类的成员
D. 当一个类多次间接从基类派生以后,其基类只被一次继承 5-23.下列虚基类的声明中正确的是( D )。
A.class virtual B:public A B.virtual class B:public A
C.class B:public A virtual D.class B: virtual public A 5-24.若类A和类B的定义如下:
class A {
int i,j; public:
A(int m,int n):i(m),j(n){} int Geti(){return i;} };
class B:public A {
int k; public:
B(int m,int n,int u):A(m,n),k(u){} void Make(){k=i*j;} };
int main()
- 15 -
{
B b(1,2,3); return 0; }
则上述定义中,( A )是非法的表达式。 A.k=i*j; B.int k; C.return i; D.void Make() 5-25.以下说法中,错误的是( D ) A.派生类对象可以向基类对象赋值
B.派生类对象可以替代基类对象向基类对象的引用进行赋
值或初始化
C.如果函数的参数是基类对象或基类对象的引用,实参可
以用子对象的实参
D.可以用基类对象的指针指向派生类对象,并访问派生类
中的全部成员
6-1.面向对象方法的多态性是指( C )。 A. 一个类可以派生出多个特殊类
B. 一个对象在不同的运行环境中可以有不同的变体
C. 针对一消息,不同的对象可以以适合自身的方式加以响应 D. 一个对象可以是由多个其他对象组合而成的 6-2.从系统实现的角度看,多态性分为静态多态性和动态多态性。以下说法错误的是( C )。
A.静态多态性是编译时的多态性
B.函数重载实现的多态性是静态多态性 C.通过虚函数实现的多态性是静态多态性 D.动态多态性是运行时的多态性
6-3.关于消息,下列说法中不正确的是( B )。
A. 发送消息的对象请求服务,接受消息的对象提供服务 B. 消息的发送者必须了解消息的接收者如何响应消息
C. 在C++中,消息的发送具体体现为对接收消息的对象的某个函数的调用
D. 每个对象只能接收某些特定格式的消息 6-4.编译时的多态性使用什么获得?( A )
A.重载函数 B.继承 C.虚函数 D.B和C
6-5.运行时的多态性使用什么获得?( C )
A.重载函数 B.继承
- 16 -
共分享92篇相关文档