2012面向对象程序设计试题集 联系客服

发布时间 : 星期一 文章2012面向对象程序设计试题集更新完毕开始阅读cb36c5a0f524ccbff1218430

消这种关联。

A. 流 B. 类 C. 结构 D. 对象

对while、do…while循环结构,下面说法正确的是( )。 A.只是表达形式不同

B.do…while结构中的语句至少执行一次 C.while结构中的语句至少执行一次

D.条件成立时,它们有可能一次也不执行 关于函数的调用下面不正确的是( )。

A. 由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行 B. 函数的调用可以在任意函数之间进行,只要有需要 C. 一个函数可以自己调用自己

D. 函数返回时可以不必带返回值,这时函数在定义时其类型应用void表示 关于函数的声明和定义正确的是( )。

A. 函数的声明是必须的,只有这样才能保证编译系统对调用表达式和函数之间的参数

进行检测,以确保参数的传递正确

B. 函数的定义和声明可以合二为一,可以只有函数定义即可

C. 函数在声明时,其参数标识符可省略,但参数的类型、个数与顺序不能省略

D. 函数的存储类型为外部型,所以可以在其他函数中被调用,它在定义时象其他外部变量一样,可以在其他函数内定义

用于类中虚成员函数说明的关键字是( )。

A.public B.virtual C. protected D. private 有如下程序段: int i=5;

while (int i=0) { cout<<\

运行时输出“*”的个数是 ( ) A. 0 B.1 C. 5 D. 无穷

运算符重载时不需要保持的性质是( )

A. 操作数个数 B.操作数类型 C. 优先级 D.结合性 有如下类定义和变量定义: class A { public:

A() { data=0;} ~A() {}

int GetData() const { return data;} void SetData(int n) { data=n;} private:

int data; };

const A a; A b;

下列函数调用中错误的是( )

A. a.GetData(); B.a.SetData(10); C.b.GetData(); D. b.SetData(10); 对类的构造函数和析构函数描述正确的是( ) A. 构造函数可以重载,析构函数不能重载; B. 构造函数不能重载,析构函数可以重载; C. 构造函数可以重载,析构函数也可以重载;

D. 构造函数不能重载,析构函数也不能重载; 下列有关类的说法不正确的是( )。 A. 对象是类的一个实例

B. 任何一个对象只能属于一个具体的类 C. 一个类只能有一个对象

D. 类与对象的关系和数据类型与变量的关系相似 ( )的功能是对象进行初始化。

A.析构函数 B. 数据成员 C.构造函数 D.静态成员函数 关于友元的描述中,( )是错误的。 A. 友元函数是成员函数,它被说明在类体内 B. 友元函数可直接访问类中的私有成员 C. 友元函数破坏封装性,使用时尽量少用 D. 友元类中的所有成员函数都是友元函数

为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为( )。

A.public B. protected C.private D. static 下面对静态数据成员的描述中,正确的是( )。 A.静态数据成员是类的所有对象共享的数据 B.类的每一个对象都有自己的静态数据成员 C.类的不同对象有不同的静态数据成员值 D.静态数据成员不能通过类的对象调用 下列表达方式正确的是( )。

A.class P{ B. class P{ public: public: int x=15; int x;

void show(){cout<

f=25; void Seta (int x) {a=x;} 以下叙述中不正确的是( ):

A.一个类的所有对象都有各自的数据成员,它们共享函数成员; B. 在一个类中可以声明另一个类的对象作为它的数据成员; C. 类与对象的关系和数据类型与变量的关系相似; D. 一个对象可以属于多个类。

对于一个功能不太复杂,并且要求加快执行速度,选用( )合适

A.内置函数 B.重载函数 C.递归调用 D.嵌套调用

Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是 ( ) Sample a[2], *p = new Sample;

A.0 B. 1 C. 2 D.3

已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则( ) A.FA必须定义在FB之前 B.FB必须定义在FA之前

C.若FA定义在FB之后,则FA的原型必须出现在FB的定义之前 D.若FB定义在FA之后,则FB的原型必须出现在FA的定义之前

下列有关运算符函数的描述中,错误的是( ) A.运算符函数的名称总是以operator为前缀 B.运算符函数的参数可以是对象

C.运算符函数只能定义为类的成员函数

D.在表达式中使用重载的运算符相当于调用运算符重载函数 下面描述中,正确的是( )。 A.virtual可以用来声明虚函数

B.含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类 C.既使基类的构造函数没有参数,派生类也必须建立构造函数 D.静态数据成员可以通过成员初始化列表来初始化

下列对基类和派生类关系的描述中,错误的是( )。 A.派生类是基类的具体化 B.派生类是基类的子集 C.派生类是基类定义的延续 D.基类是派生类的抽象

C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是( )。 A.增加了一些新的运算符 B.允许函数重载,并允许设置缺省参数 C.规定函数说明符必须用原型 D.引进了类和对象的概念 下列表示引用的方法中,( )是正确的。 已知:int k=1000;

A.int &x=k; B.char &y; C.int &z=1000; D.float &t=&k; 下面对于友元函数描述正确的是( )。

A.友元函数的实现必须在类的内部定义 B.友元函数是类的成员函数

C.友元函数破坏了类的封装性和隐藏性 D.友元函数不能访问类的私有成员 假定AB为一个类,则执行“AB a(4) , b[3] , * p[2] ;”语句时,自动调用该类构造函数的次数为( )。

A.3 B.4 C.6 D.9

以下不属于构造函数特征的是( )

A. 构造函数名与类名相同 B. 构造函数可以重载

C. 构造函数可以设置默认参数 D. 构造函数必须指定函数类型 下列定义中,X是一个类, ( )是定义指向对象数组的指针p。 A.X *p[4] B.X (*p)[4] C.( X*) p[4] D.X *p[] 假定X为一个类,则该类的复制构造函数的声明语句为( )。 A.My Class(My Class x) B.My Class&(My Class x) C.My Class(My Class &x) D.My Class(My Class *x) 以下正确的说法是( )。

A.实参和其对应的形参各占用独立的存储单元。 B.实参和其对应的形参共占用一个存储单元。

C.只有当实参和与其对应的形参同名时才共占用存储单元。 D.形参是虚拟的,不占用存储单元。

下列关于多态性的描述,错误的是( )。

A.C++语言的多态性分为编译时的多态性和运行时的多态性 B.编译时的多态性可通过函数重载实现 C.运行时的多态性可通过模板实现

D.实现运行时多态性的机制称为动态绑定

对C++编译器区分重载函数无任何意义的信息是( ) A.参数类型 B.参数个数 C.返回值类型 D..参数顺序

关于new运算符的下列描述中,( )是错误的。 A.它可以用来动态创建对象和对象数组

B.使用它创建对象或对象数组,可以使用运算符DELETE删除 C.使用它创建对象时要调用构造函数

D.使用它调用对象数组时不 许指 定初始值

如果一个类至少有一个纯虚函数,那么就称该类为( )。

A.抽象类 B.派生类 C.纯基类 D.以上都不对 有如下程序:

#include using namespace std; class A{ public:

virtual void f() {cout<<1;} void g() {cout<<2;} }; class B: public A{

public: virtual void f() {cout<<3;} void g() {cout<<4;} };

void show(A &a) {a.f(); a.g();} int main() {

B b; show(b); return 0; } 运行时的输出结果是( ) A.12 B.34 C.14 D.32

下列虚基类的声明中,正确的是( )

A. class virtual B:public A B. virtual class B:public A C. class B:public A virtual D. class B: virtual public A 派生类的对象对它的基类成员中( )是可以访问的。 A.公有继承的公有成员 B.公有继承的私有成员 C.公有继承的保护成员 D.私有继承的公有成员 已知数组arr的定义如下: int arr[5] = {1,2,3,4,5};

下列语句中输出结果不是2的是( )

A.cout << *arr+1 <

#include using namespace std; class A{ public:

virtual void f() {cout<<1;} void g() {cout<<2;} };

class B: public A{

public: virtual void f() {cout<<3;} void g() {cout<<4;} };