191.用于类中虚成员函数说明的关键字( )
A.virtual B.public C.protected D.private
答案:A
192.下列对派生类的描述中,错误的是( )
A. 派生类的缺省继承方式是PRIVATE
B. 派生类至少有一个基类
C. 一个派生类可以作为另一个派生类的基类
D. 派生类只继承了基类的公有成员和保密成员
答案:D
193.编译时的多态性通常使用( )获得。
A.继承 B.虚函数 C.重载函数 D.析构函数
答案:C
194.下列说法中错误的是( )
A. 公有继承时基类中的public成员在派生类中是public的
B. 公有继承时基类中的private成员在派生类中是private的
C. 私有继承时基类中的public成员在派生类中是private的
D. 私有继承时基类中的public成员在派生类中是protected的
答案:D
195.下面哪个基类中的成员函数表示纯虚函数( )
A. virtual void vf(int) B.void vf(int)=0 C.virtual void vf( )=0 D.virtual void vf(int)
答案:C
196.下面叙述不正确的是( )
A. 基类的公有成员在派生类中仍然是公有的
B. 派生类一般都用公有派生
C. 对基类成员访问必须是无二义性的
D. 赋值兼容规则也使用于多重继承的组合
答案:C
197.下列虚基类的声明中正确的是( )
A. class virtual B:public A B.virtual class B:public
B. class B:public A virtual D.class B: virtual public A
答案:D
198.下面叙述不正确的是( )
A. 基类的保护成员在派生类中仍然是保护的
B. 基类的保护成员在公有派生类中仍然是保护的
C. 基类的保护成员在私有派生类中仍然是私有的
D. 对基类成员的访问必须是无两义性
答案:A
199.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类构造函数,这样将对虚基类的子对象初始化( )
A.与虚基类下面的派生类个数有关 B.多次 C.二次 D.一次
答案:D
200.关于保护成员的说法正确的是( )
A. 在派生类中仍然是保护的
B. 具有私有成员和公有成员的双重角色
C. 在派生类中是私有的
D. 在派生类中是公有的
答案:B
201.下列关于子类型的描述中,错误的是( )
A. 子类型关系是可逆的
B. 公有派生类的对象可以初始化基类的引用
C. 只有在公有继承下
D. 派生类是基类的子类型
E. 子类型关系是可传递的
答案:A
202.若要强制C++对虚函数的调用使用静态联编,则在调用中对该函数使用( A )
A.成员名限定 B. 指针 C.引用 D.VIRTUAL关键字
答案:A
204.下面( )的叙述不符合赋值兼容规则。
A.派生类的对象可以赋值给基类的对象
B.基类的对象可以赋值给派生类的对象
C.派生类的对象可以初始化基类的对象
D.派生类的对象的地址可以赋值给指向基类的指针
答案:B
205.C++有( )种联编。
A.1
B.2
C.3
D.4
答案:B
静态联编和动态联编
206.对于下列程序段,没有二义性的表达式是( )
class A{public:int f();};
class B{public:int g();int f();};
class C:public A,public B{ public : int g( ) ; h( ) ; } ;
C obj;
A.obj .f( )
B.obj .A : : g( )
C.obj .B : : f( )
D.obj .B : : h( )
答案:C
207.下面叙述错误的是( )
A.派生类可以使用private派生
B.对基类成员的访问必须是无二义性的
C.基类成员的访问能力在派生类中维持不变
D.赋值兼容规则也适用于多继承的组合
答案:C
208.派生类的对象与基类的对象的关系是( )
A.属于前者而不属于后者
B.属于前者,不一定属于后者
C.不属于前者则一定属于后者
D.属于前者则一定属于后者
答案:D
209.对于下面程序段,表达式正确的是( )
class Base {public:int b;};
class Base1:public base{ };
class Base2:public base{ };
class Derived:public base1,public base2{public:int fun ( );};
Derived d;
A. d. Base1::b
B. d. Base ::b
C. d.b
D. d. Base :: fun( )
答案:A
210.下列程序中横线处正确的语句应该是( )
#i nclude<iostream>
using namespace std;
class Base
{
public;
void fun( ){cout< < “Base : : fun” < < endl;}
};
class Derived : public Base
{
public:
void fun( )
{
_________//显示调用基类的函数fun( )
cout < < “Derived : : fun” < < endl;
}
};
Afun( ).
B.Base.fun( )
C.Base : : fun( )
D.Base - >fun( )
答案:C
211.虚函数必须是类的( )
A.成员函数
B.友元函数
C.构造函数
D.析构函数
答案:A
212.不能说明为虚函数的是( )
A.析构函数
B.构造函数
C.类的成员函数
D.以上都不对
答案:B
213.不同的对象可以调用相同名称的函数,并可导致完全不同的行为的现象称为( )
A.多态性
B.抽象
C.继承
D.封装
答案:A
214. 若析构函数是虚函数,则delete对析构函数的调用采用( )
A.静态联编
B.动态联编
C.重载函数
D.多重函数
答案:B
215. 关于虚函数,下列表述正确的是( )
A.如果在重定义虚函数时使用virtual,则该重定义函数仍然是虚函数
B.虚函数不得声明为静态函数
C.虚函数不得声明为另一个类的友元函数
D.派生类必须重新定义基类的虚函数
答案:B
216.下列程序段中具有相同值的是( )
class Base {int b;};
class Base1:virtual public base{int b1;};
class Base2:virtual public base{int b2;};
class derived:publiic base 1,public base 2{int b3;};
derived d;
A.d.b与 d.base1::b
B. d.base1::b与 d.base1::b1
C. d.b与 d. b3
D. d.base:2:b与 d.base2::b2
答案:A
虚表的理解。
217.对于公有派生,它的“访问控制“是( )
A.private
B.public
C.protected
D.inaccessible
答案:B
218.关于纯虚函数,下列表述正确的是( )
A.纯虚函数是给出实现版本(即无函数体定义)的虚函数
B.纯虚函数的声明总是“=0”结束
C.派生类必须实现基类的纯虚函数
D.含有纯虚函数的类一定是派生类
答案:B
219.若派生类中没有对基类的虚函数进行重定义,则它继承基类中的( )
A.访问权限
B.保护成员
C.虚函数
D.成员函数
答案:C
220.基类和派生类可以分别叫做( )
A.“大类”和“小类”
B.“父类”和“子类”
C.“小类”和“大类”
D.“子类”和“父类”
答案:B
221.多态调用的指( )
A.以任何方式调用一个虚函数
B.以任何方式调用一个纯虚函数
C.借助于指向对象的基类指针或引用调用一个虚函数
D.借助于指向对象的基类指针或引用调用一个纯虚函数
答案:C
多态,父类指针指向子类对象
222.若派类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的( )
A.私有成员
B.公有成员
C.保护成员
D.保护成员或私有成员
答案:A
223.对基类和派生类的描述中错误的是( )
A.派生类是基类的具体化
B.基类继承了派生类的属性
C.派生类是基类定义的延续
D.派生类是基类的特殊化
答案:B
224.关于抽象类,下列表述正确的是( )
A.抽象类的成员函数中至少有一个没有实现的函数(即无函数体定义的函数)
B.派生类必须实现作为基类的抽象类中的纯虚函数
C.派生类不可能成为抽象类
D.抽象类不能用于定义对象
答案:D
225.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p->A::func()将( )
A.调用类A中是函数func()
B.调用类B中是函数func()
C.根据P所指的对象类型而确定调用A中或类B中的函数func()
D.既调用类A中函数,也调用类B中的函数
答案:A
p->A::func()手动指定了调用函数
226.对于类定义
class A{
public:
virtual void funcl(){}
void func2(){}
};
class B:public A{
PUBLIC:
Void func1(){cout<<”class Bfunc1”<<endl;}
Cirtual void func2(){cout<<”class B func2”<<endl;}
};
下面正确的叙述是( )
A.A::func2()和B::func1()都是虚函数
B.A::func2()和B::func1()都不是虚函数
C.B::func1()是虚函数,A::func2()不是虚函数
D.B::func1()不是虚函数,A::func2()是虚函数
答案:C
227.对于多重继承,有( )
A.一个派生类只能有一个基类
B.一个基类只能产生一个派生类
C.一个基类必须产生多个派生类
D.一个派生类可有多个基类
答案:D
228.下列程序段中,错误的语句是( )
class A{
public:virtual void f()=0; file://(1)
void g(){f();} file://(2)
A(){f();} file://(3)
}
A.(1)
B.(2)
C.(3)
D.(1)和(2)
答案:C
在构造函数内部调用纯虚接口。
229.下面程序段中,说法正确的是( )
class location{
public :
int GetX();
};
class rectangle:private location {
public:
int GetW();
};
A.类rectangle私有派生类 location
B.类rectangle中的public成员在类 location中是私有的
C.类location中的public成员在类 rectangle中是不可访问的
D. viod f( ) {
Rectangle r;
Int X=r .GetX( );
}
其中int X = r .GetX( );是非法语句
答案:D
类rectangle私有派生类 location错误,是类location私有派生类rectangle
类rectangle中的public成员在类 location中是私有的错误,类location内部没有类rectangle中的成员。
类location中的public成员在类rectangle中是不可访问的错误,是不可以在类外部公开访问的。
230.在公有派生情况下,有关派生类对象和基类对象的关系的关系,不正确的叙述是( )
A.派生类的对象可以赋给基类对象
B.派生类的对象可以初始化基类的引用
C.派生类的对象可以直接访问基类的成员
D.派生类的对象的地址可以赋给指向基类的指针
答案:C
派生类的对象可以直接访问基类的成员是错误的,派生类只可以访问自身的,而不是基类的。他只是具有基类的某种性质。
231.可以用p.a的形式访问派生类对象p 的基类成员a其中a是( )
A.私有继承的公有成员
B.公有继承的私有成员
C.公有继承的保护成员
D.公有继承的公有成员
答案:D
子类可以访问的父类成员对象必须是公开继承并且在父类中是公开的。
232.建造新的派生类是( )的实质。
A.派生
B.抽象
C.继承
D.封装
答案:C
利用继承机制,新的类可以从已有的类中派生。那些用于派生的类称为这些特别派生出的类的“基类”。
233.动态联编所支持的多态性称为( )
A.虚函数
B.继承
C.编译时的多态性
D.运行时的多态性
答案:D
编译程序在编译阶段并不能确切知道将要调用的函数,只有在程序运行时才能确定将要调用的函数,为此要确切知道该调用的函数,要求联编工作要在程序运行时进行,这种在程序运行时进行联编工作被称为动态联编。
234.下列运算符中,( )运算符在C++中不能重载。
A)?:
B)+
C)-
D)〈=
答案:A
C++并不是所有的操作符都能被重载。除了. ,.* ,:: ,? : ,sizeof,typeid这几个运算符不能被重载,其他运算符都能被重载。
235.在C++中,打开一个文件就是将这个文件与一个( )建立关联;关闭一个文件就是取消这种关联。
A)流
B)类
C)结构
D)对象
答案:A
C++中,输入和输出全部都是输入流和输出流。
236.下列关于运算符重载的描述中, ( )是正确的。
A)运算符重载可以改变操作数的个数
B) 运算符重载可以改变优先级
C)运算符重载可以改变结合性
D)运算符重载不可以改变语法结构
答案:D
运算符重载不可以改变语法结构。语法结构是语言本身决定的,用户无法进行改变。
237.若定义cin>>str;
当输入
Microsoft Visual Studio 6.0!
所得的结果是str=( )。
A、 Microsoft Visual Studio 6.0!
B、 Microsoft
C、 Microsoft Visual
D、 Microsoft Visual Studio 6.0
答案:B
以空格作为一次有效输入,Microsoft Visual Studio 6.0!默认为4次有效输入。
238.有元运算符obj1〉obj2被C++编译器解释为( )。
A)operator>(obj1,obj2)
B) >(obj1,obj2)
C)jobj2.operator>(obj1)
D)obj1.operator(obj2)
答案:A
友员解释为operator > (obj1, obj2)
成员解释为obj1.operator>(obj2)
239.进行文件操作时需要包含( )头文件。
A、 iostream
B、 fstream
C、 stdio
D、 stdlib
答案:B
fstream是文件操作的最高父类,他又包括两个子类:ifstream和ofstream。
240.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。
A)ios::in
B) ios::out
C)ios::trunc
D)ios::binary
答案:A
fstream有两个子类:ifstream(input file stream)和ofstream(outpu file stream),ifstream默认以输入方式打开文件,而ofstream默认以输出方式打开文件。
241.使用如setw()的操作符对数据进行格式输出时,应包含( )文件。
A)iostream
B)fstream
C)stdio
D)iomanip
答案:D
io代表输入输出,manip是manipulator(操纵器)的缩写。
iomanip的作用:
主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文件,就像C里面的格式化输出一样