文档库

最新最全的文档下载
当前位置:文档库 > 太原理工大学复试题 面向对象

太原理工大学复试题 面向对象

1.面向对象程序设计将数据与A放在一起,作为一个相互依存、不可分割的整体来处理。A.对数据的操作 B. 信息 C. 数据隐藏 D. 数据抽象

2.下面关于对象概念的描述中,A是错误的。

A. 对象就是C语言中的结构体变量

B. 对象代表这正在创建的系统中的一个实体

C. 对象是一个状态和操作(或方法)的封装体

D. 对象之间的信息传递是通过消息进行的

3.C++对C语言作了很多改进,从面向过程变成为面向对象的主要原因为D。

A. 增加了一些新的运算符

B. 允许函数重载,并允许设置缺省参数

C. 规定函数说明符必须用原型

D. 引进了类和对象的概念

4. 在下列关键字中,用以说明类中公有成员的是A。

A. public

B. private

C. protected

D. friend

5. D是一个类的多个对象共享的。

A. 公有数据成员

B. 私有数据成员

C. 保护数据成员

D. 静态数据成员

6.对定义重载函数的下列要求中, D 是错误的。

A. 要求参数的个数不同

B. 要求参数中至少有一个类型不同

C. 要求参数个数相同是,参数类型不同

D. 要求函数的返回值不同

7. 关于成员函数特征的下述描述中,____A____是错误的。

A.一定是内联函数

B.可以重载

C.可以设置缺省参数

D.可以是静态的

8.下列的各类函数中,C不是类的成员函数。

A. 构造函数

B. 析构函数

C. 友元函数

D. 拷贝初始化构造函数

9. 下列不能作为类的成员的是B。

A. 自身类对象的指针

B. 自身类对象

C.自身类对象的引用

D.另一个类的对象

10. 下述静态成员的特性中,D是错误的。

A. 说明静态数据成员时前面要加修饰符static

B. 静态数据成员要在类体外进行初始化

C. 引用静态数据成员,要在静态数据成员名前加<类名>和作用域运算符

D. 静态数据成员不是所有对象所共用的

11.已知类Sample中的一个成员函数说明如下:void set(Sample &a); 其中,Sample &a 的含义是C 。

A. 指向类Sample的指针a

B. 将a的地址值赋给变量set

C. a是类Sample的对象引用,用来作函数set()的形参

D. 变量Sample与a按位相与作为函数set()的参数

12、下列表示引用的方法中,A 是正确的。已知:int m=10;

A. int &x=m;

B. int &y=10;

C. int &z;

D. float &t=&m;

13、关于delete运算符的下列描述中,( C )是错误的。

A.它必须用于new返回的指针;

B.它也适用于空指针;

C.对一个指针可以使用多次该运算符;

D.指针名前只有一对方括号符,不管所删除数组的维数。

14、一个类的友元函数能够访问该类的D。

A. 私有成员

B. 保护成员

C. 公有成员

D. 所有成员

15.下列析构函数的特征是___A__。

A. 一个类中只能定义一个析构函数

B. 析构函数名与类名无关

C. 析构函数的定义只能在类体内

D. 析构函数可以有一个或多个参数

1.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是(B)

A.类

B.对象

C.函数体

D.数据块

2.面向对象的程序设计语言必须具备的关键要素是( C )

A.抽象和封装

B.抽象和多态性

C.抽象、封装、继承和多态性

D.抽象、封装和继承性

3.类的构造函数被自动调用执行的情况是在定义该类的(C)

A.成员函数时

B.数据成员时

C.对象时

D.友元函数时

4.设有函数模板template Q Sum(Qx,Qy){ return(x)+(y); } 则下列语句中对该函数模板错误..的使用是( D)

A.Sum(10,2);

B.Sum(5.0,6.7);

C.Sum(15.2f,16.0f);

D.Sum(″AB″,″CD″);

5.已知类A是类B的友元,类B是类C的友元,则(D)

A.类A一定是类C的友元

B.类C一定是类A的友元

C.类C的成员函数可以访问类B的对象的任何成员

D.类A的成员函数可以访问类B的对象的任何成员

6.如果表达式++i*k中的“++”和“*”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为(B )

A.operator*(i.operator++(),k)

B.operator*(operator++(i),k)

C.i.operator++().operator*(k)

D.k.operator*(operator++(i))

7.下列说法中正确的是( B )

A.类定义中只能说明函数成员的函数头,不能定义函数体

B.类中的函数成员可以在类体中定义,也可以在类体之外定义

C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中

D.在类体之外定义的函数成员不能操作该类的私有数据成员

8.若派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的

(A)

A.私有成员

B.公有成员

C.保护成员

D.保护成员或私有成员

9.对基类和派生类的关系描述中,错误的是( B)

A.派生类是基类的具体化

B.基类继承了派生类的属性

C.派生类是基类定义的延续

D.派生类是基类的特殊化

10.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p->A::func()将( A )

A.调用类A中的函数func()

B.调用类B中的函数func()

C.根据p所指的对象类型而确定调用类A中或类B中的函数func()

D.既调用类A中函数,也调用类B中的函数

1.下列特性中,C与C++共有的是(D)

A.继承

B.封装

C.多态性

D.函数定义不能嵌套

2.通常情况下,函数模板中的类型参数个数不能是( A )

A.0

B.2

C.4

D.3

3.在下列成对的表达式中,运算符“+”的意义不相同的一对是(C)

A.5.0+2.0和5.0+2

B.5.0+2.0和5+2.0

C.5.0+2.0和5+2

D.5+2.0和5.0+2

4.类的指针成员的初始化是通过函数完成的,这个函数通常是(B)

A.析构函数

B.构造函数

C.其它成员函数

D.友元函数

5.要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为(D)

A.const char *p=“ABCD”;

B.char const *p=“ABCD”;

C.char *const p=“ABCD”;

D.const char * const p=“ABCD”;

6.静态成员函数没有(B)

A.返回值

B.this指针

C.指针参数

D.返回类型

7.当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中(A)

A.都是虚函数

B.只有被重新说明时才是虚函数

C.只有被重新说明为virtual时才是虚函数

D.都不是虚函数

8.下面叙述不正确的是(D )

A.派生类一般都用公有派生

B.对基类成员的访问必须是无二义性的

C.赋值兼容规则也适用于多重继承的组合

D.基类的公有成员在派生类中仍然是公有的

9.在C++中实现封装是借助于(B)

A.枚举

B.类

C.数组

D.函数

10.所有在函数中定义的变量,都是(B)

A.全局变量

B.局部变量

C.静态变量

D.寄存器变量

1.在C++中,函数原型不能标识(D)

A.函数的返回类型

B.函数参数的个数

C.函数参数类型

D.函数的功能

2.在C++程序中,对象之间的相互通信通过(B)

A.继承实现

B.调用成员函数实现

C.封装实现

D.函数重载实现

3.对于任意一个类,析构函数的个数最多为(B)

A.0

B.1

C.2

D.3

5.友元关系不能(A)

A.继承

B.是类与类的关系

C.是一个类的成员函数与另一个类的关系

D.提高程序的运行效率

1.面向对象程序设计中的数据隐藏指的是(D)

A.输入数据必须输入保密口令

B.数据经过加密处理

C.对象内部数据和代码合并在一起

D.对象内部数据结构的不可访问性

2.在C++中,编写一个内联函数Fun,使用int类型的参数,求其平方并返回,返回值也

为int类型,下列定义正确的是(B)

A.int Fun(int x){return x*x;}

B.inline int Fun(int x){return x*x;}

C.int inline Fun(int x){return x*x;}

D.int Fun(int x){inline return x*x;}

3.下面关于重载函数的叙述中正确的是(C)

A.重载函数必须具有不同的返回值类型

B.重载函数的形参个数必须不同

C.重载函数必须有不同的形参列表

D.重载函数的函数名可以不同

4.若有定义“int x=17;”,则语句“cout<

A.11

B.0x11

C.21

D.021

5.下列关于析构函数的描述中正确的是(B)

A. 析构函数可以重载

B.析构函数可以是虚函数

C.析构函数名与类名相同

D.析构函数的返回类型为void

6.下列关于纯虚函数的描述中,正确的是(D)

A. 纯虚函数是一种特殊的虚函数,它是个空函数

B. 具有纯虚函数的类称为虚基类

C.一个基类中说明有纯虚函数,其派生类一定要实现该纯虚函数

D. 具有纯虚函数的类不能创建类对象

7.下列关于运算符重载的描述中,正确的是(D)

A.可以改变运算符的目数

B.可以改变运算符的优先级

C.可以改变运算符的结合性

D.可以改变运算符的功能

8.要将类A说明是类B的虚基类,正确的描述是(B)

A. class virtual B: public A

B. class B: virtual public A

C. virtual class B: public A

D. class B: public A virtual

9.下面关于静态成员的描述中,正确的是(A)

A.静态数据成员是类的所有对象共享的数据

B.类的每个对象都有自己的静态数据成员

C.类的不同对象有不同的静态数据成员值

D.静态数据成员不能通过类的对象访问10.假设Sample是个类,则语句“Sample a[2],*p[3];”调用构造函数的次数为(B )A.0 B.2 C.3 D.5

构造函数

1构造函数是在(创建对象)时被执行的。

2通过一个构造函数调用虚函数时,c++编译系统对该调用采用(静态链接)

3构造函数不能是虚函数。

友元函数

1友元函数是独立于当前类的外部函数。

2友元的作用之一是提高程序的执行效率。

3能用友元函数重载的运算符是+

析构函数

1类的析构函数的作用是(删除对象)

2在定义析构函数时不能指定参数

3定义析构函数时应注意(无形参,也不可重载)

1使用派生类的主要原因是提高代码的可重用性。

2不能将一个声明为指向派生类对象的指针指向其基类的一个对象

3声明为指向基类对象的指针,当其指向派生类对象时,只能利用它来直接访问派生类中从基类继承来的成员,不能直接访问公有派生类中特定的成员。

4若在派生类中具有与基类中同名的成员函数,则基类中的此成员函数不允许在派生类中进行访问声明。

5在派生类中重新定义虚函数时必须在(参数个数,参数类型)方面与基类保持一致

6派生类对象可以访问基类中的(公有继承的公有成员)

零碎知识

1.c++语言允许在重载运算符时改变运算符的原来的功能

2.c++语言中数据封装可以由struct关键字提供

3.模板的使用是为了提高代码的可重用性

4.在(函数代码少,频繁调用)情况下适宜采用inline定义内联函数

5虚基类的声明classB:virtual public A

6面向对象程序的设计中。(数据)与(对数据的操作)放在一起

7在建立对象前,就可以为静态数据成员赋值。

8重载赋值运算符时,应声明为(成员)函数

转换函数

1转换函数不能带有参数

2转换函数不能指定返回类型

3一个类可以有多个转换函数

4在类中声明转换函数时不能指定(参数)

1一个类可以有多个构造函数

2一个类只有一个析构函数

3在一个类中可以说明具有类类型的数据成员

4抽象类应含有至少一个虚函数,至多一个虚函数是纯虚函数。

5一个抽象类不能说明抽象类的对象,函数的返回类型,函数参数

6这个类只能用作基类来派生出新的类,而不能用这种类来定义对象时,称这种类为抽象类

7基类的私有成员在派生类中均是不可访问的,他只能有基类的成员访问

8在公有继承方式之下,基类中的公有成员和保护成员在派生类中的访问属性不变

9在保护继承方式之下,基类中的公有成员和保护成员在派生类中均为保护的。

10.在私有继承方式之下,基类中的公有成员和保护成员在派生类中均为私有的、(私有的变为私私有)

1假定AB为一个类,则语句AB(AB&x);为该类(复制)构造函数的原型说明。

2C++支持的两种多态性分别是(运行)多态性和(编译)多态性

3定义类的动态对象数组时,系统只能够自动调用该类的(无参)构造函数对其进行初始化。

4运算符重载时,其函数名由(operator运算符)构成,成员函数重载双目运算符时,左操作数是(当前对象)右操作数是(函数的形参)

5用aa初始化a:a=newint(aa)

6c++支持面向对象程序设计的四个要素是:抽象性,封装性,继承性,多态性

7模板分为(类)模板和(函数)模板

8显示调用基类的函数fun():Base::fun()

9释放动态存储空间delete(a)

10引用通常运作函数的(形参)和(返回值)

11在类中必须声明成员函数的(原型)成员函数的(实现)部分可以写在类外。12如果需要在被调函数运行期间,改变主调函数中实参变量的值,则函数的形参应该是(引用)类型或(指针)类型

13(抽象)类型只能作为基类使用,而不能声明他的对象

14进行函数重载时,被重载的同名函数如果都没有用const修饰,则他的形参(个数)或(类型)必须不同

15通过一个(常)对象,只能调用它的常成员函数,不能调用其他成员函数。16拷贝构造函数的形参必须是(本类对象的引用)

1.下列关于C ++的类和对象的描述中,不正确的有(C)。

A. 对象是类的一个实例

B. 类与对象的关系和数据类型与变量的关系相似

C. 一个类只能有一个对象

D. 任何一个对象只能属于一个具体的类

2在类的定义体外定义成员函数时,需要在函数名前加上(C)。

A. 类名及作用域运算符

B. 类对象

C. 类名

D. 作用域运算符

3 有关类的说法不正确的是(C)。

A. 只有类中的成员函数才能存取类中的私有数据

B. 类是一种用户自定义的数据类型

C. 在类中,如果不作特别说明,所有的成员函数均为公有类型

D. 在类中,如果不作特别说明,所有的成员函数均为私有类型

4 面向对象程序设计将数据与(C)放在一起,作为一个相互依存、不可分割的整体来处理。 A. 数据抽象 B. 信息 C. 对数据的操作 D. 数据隐藏

5 在下列各类函数中,(A)不是类的成员函数。

A. 友元函数

B. 构造函数

C. 析构函数

D. 拷贝初始化构造函数

6 要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用(D)

A. 嵌套调用

B. 递归调用

C. 内联函数

D. 重载函数

7. 关于成员函数特征的下述描述中(C)不正确的是。

A. 成员函数可以重载

B. 成员函数可以是静态的

C.成员函数一是内联函数

D. 成员函数可以设置参数的默认值

8 下列函数中,(C)不能重载。

A. 成员函数

B. 构造函数

C. 非成员函数

D. 析构函数

9 在类内部定义的(C)数据不能被不属于该类的函数来存取。

A. protected

B. public

C. private

D. friend

10 若函数是在运行时被激活的,则该称为(A)

A. 非内联函数

B. 内联函数

C. 成员函数

D. 静态成员函数

1.下列对派生类的描述中,(D)是错误的。

A. 一个派生类可以作另一个派生类的基类

B. 派生类的成员除了它自己的成员外,还包含了它的基类的成员

C. 派生类至少有一个基类

D. 派生类中继承的基类成员的访问权限到派生类保持不变

2在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则

(B)。A. 以上都不对 B. 完全相同 C. 部分相同,部分不同 D. 完全不同

3 设置虚基类的目的是(B)。

A. 简化程序

B. 消除二义性

C. 减少目标代码

D. 提高运行效率

4 派生类的对象对它的基类成员中(D)是可以访问的。

A. 私有继承的公有成员

B. 公有继承的私有成员

C. 公有继承的保护成员

D. 公有继承的公有成员

5 在C ++中用来实现运行时多态性的是(D)。

A. 静态成员

B. 虚函数

C. 析构函数

D. 重载函数

6 下列叙述中,不正确的是(C)。

A. 纯虚函数不能定义其实现部分

B. 含纯虚函数的类为抽象类

C. 抽象类不能作为派生类的基类

D. 不能直接由抽象类建立对象

7 (C)是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。A. 虚析构函数 B. 静态成员函数 C. 纯虚函数 D. 虚构造函数

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

A. 抽象类

B. 派生类

C. 以上都不对

D. 虚基类