文档库 最新最全的文档下载
当前位置:文档库 › 面向对象的程序设计

面向对象的程序设计

第一题、单项选择题(每题1分,5道题共5分)

1、已知类 A 是类 B 的友元,类 B 是类 C 的友元,下面说法正确的是 ( )

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

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

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

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

2、一个类的友元不是该类的成员,与该类的关系密切,所以它()。

A、有this指针,有默认操作的对象

B、没有this指针,可以有默认操作

的对象

C、有this指针,不能执行默认操作

D、没有this指针,也就没有默认操

作的对象

3、引入友元的主要目的是为了()。

A、增强数据安全性

B、提高程序的可靠性

C、提高程序的效率和灵活性

D、保证类的封装性

4、下面的语句能将函数void A(){} 定义为类B的友元函数的是()

A、class B{ friend void A();};

B、class B{ static friend void A

();};

C、class B {friend static void A

();};

D、class B {frined A(){};};

5、下面的语句中能将类B 定义为类A的友元类的是()

A、friend class B;

B、class A{ friend B};

C、class A{ friend class B;};

D、class friend B class A;

第二题、多项选择题(每题2分,5道题共10分)

1、一个类的友元不是该类的成员,与该类的关系密切,所以下面它的说法错误的是()。

A、有this指针,有默认操作的对象

B、没有this指针,可以有默认操作的对象

C、有this指针,不能执行默认操作

D、没有this指针,也就没有默认操作的对象

2、定义类B的构造函数为类A的友元函数的语句是()

A、class A { friend B();};

B、class A { friend B::B();};

C、class A { friend void B::B();};

D、class A { friend double B::B();};

3、关于友元函数的说法正确的是()

A、友元函数可以是普通函数,可以是其他类的成员函数,也可以是本类的成员

函数

B、友元函数可以访问多个类的私有成员和保护成员

C、在调用友元函数的时候需要使用“.”运算符

D、如果友元函数是某个类的成员函数,在定义这个友元函数的时候要使用类前

缀。

4、若B类为A类的友元类,则下面的说法错误的是()

A、B类的所有成员函数都是A类的友元函数

B、B类指定的成员函数才是A类的友元

C、A类的所有成员函数可以访问B类的成员

D、B类的私有成员函数不能可以访问A类的私有成员

5、关于友元的说法正确的是()

A、如果函数f是类A的友元函数,那么函数f的所有重载函数都是类A的友元

函数

B、如果函数f是类A的友元函数,那么f可以访问类A的所有成员

C、如果函数f是类A的友元函数,那么函数f不可以声明为静态成员函数

D、如果函数f是类A的友元函数,那么f可以调用A的构造函数

第三题、判断题(每题1分,5道题共5分)

1、友元提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。

正确错误

2、友元类的所有成员函数都可以访问相应类的成员。

正确错误

++允许使用友元,但是友元会破坏封装性。

正确错误

、友元类是使用关键字声明的类,它的所有成员函数都是相应类的友元函数。

正确错误

、一个函数可以是多个类的友元函数。

正确错误

A B

C D

、如果表达式”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为

A B

C D

、双目运算符的调用格式是(

A右运算对象

B 象

C右运算对象

D 象

A B

C D 、下面是重载单目运算符的成员函数原形,其中最符合

A Value Value::operator-(Value); B

C e);

D &);

1、在重载一运算符时,若运算符函数的形参表中没有参数,则可能的情况是()。

A、该运算符是一个单目运算符。

B、该运算符函数有一个隐含的参数this。

C、该运算符函数是类的成员函数。

D、该运算符函数是类的友元函数。

2、下面运算符不能重载的是()

A、<<

B、::

C、.

D、,

3、重载del_ete运算符的格式错误的是()

A、void * operator del_ete(void*);

B、void * operator del_ete(void*,参数表);

C、void * operator del_ete(参数表);

D、void * operator del_ete();

4、下面关于逗号运算符的说法正确的是()

A、逗号运算符是多目运算符

B、逗号运算符的表达式为“左运算数,右运算数”,返回值为右运算数的值。

C、逗号运算符可以重载为成员函数,形参只带右运算数。

D、逗号运算符的返回值为左运算数的值。

5、下面关于函数调用运算符正确的说法是()

A、重载函数调用运算符只能说明为类的非静态成员函数

B、重载了的函数调用运算符可以带多个形参,也可以带缺省参数

C、重载函数调用运算符的作用与重载函数的作用相同

正确错误

、双目运算符类的成员函数后,表达式“ obj1 op obj2

正确错误

、双目运算符类的友元函数后,表达式“ obj1 op obj2

正确错误

、重载=运算符没有实际意义,因为系统会为每一个类自动生成赋值运算符。

正确错误

、下标运算符重载函数只能作为类的成员函数,不能作为类的友元函数。

正确错误

A

B

return Q+x; return x+x; } C

D

eturn x*x; return x

A其中用到通用类型参数

B

到具体函数调用时生成

C D 、关于模板之间的关系说法正确的是(

A B

C D 、下面函数模板的声明正确的是(

A} B

n(int x){…}

C、template < class T> void fu

n(T x){…}

D、template <class T> void fun

(class T x){…}

5、下面关于函数调用的顺序说法正确的是()

A、函数调用时首先匹配参数完全相同

的函数

B、函数调用时首先寻找匹配的函数模

C、函数调用时如果没有找到对应的函

数模板生成模板函数就查找参数相同的函

D、函数调用时如果函数模板和函数都

没有对应的,函数调用错误

第二题、多项选择题(每题2分,5道题共10分)

1、关于模板函数的说法正确的是()

A、模板函数不能直接执行

B、模板函数是一组函数的抽象

C、模板函数的编译系统遇到函数调用时生成的

D、模板函数是重载函数

2、关于类模板的说法正确的是()

A、类模板是类的抽象

B、类模板是模板类的抽象

C、类模板中用到通用类型参数

D、类模板和普通类一样可以用于定义对象

3、已经有函数模板定义 template < class T> T fun(T x, T y){ return (x>y) ? x: y;} 下面的函数调用正确的是()

A、fun(5,6)

B、fun(5, 2.0)

C、fun(‘a’, ‘c’)

D、fun(‘a’, 4)

4、关于函数模板的实例化正确的说法是()

A、模板函数在实例化之前要先声明

B、模板类型可以进行隐式的类型转化

C、模板函数是函数模板的特例

D、函数模板实例化生成的函数模板是重载函数

5、下面关于函数调用的顺序说法错误的是()

A、函数调用时首先匹配参数完全相同的函数

B、函数调用时首先寻找匹配的函数模板

C、函数调用时如果没有找到对应的函数模板生成模板函数就查找参数相同的函

D、函数调用时如果函数模板和函数都没有对应的,函数调用错误

第三题、判断题(每题1分,5道题共5分)

1、函数模板中的每一个类型参数在函数参数表中必须至少使用一次。

正确错误

2、模板类型参数名可以用来指定函数模板的返回类型。

正确错误

3、函数模板每个模板类型参数前面都必须用关键字class或typename修饰。

正确错误

4、函数模板是个模板,用来生成函数。模板函数是个函数,由函数模板生成。

正确错误

5、类模板的无类型参数可以是数组或指针。

正确错误

A B

C D

、在私有继承的情况下,基类成员在派生类中的访问权限

A B

C、受保护

D、不受保护

3、继承机制的作用是 ( )

A、信息隐藏

B、数据封装

C、定义新类

D、数据抽象

4、从一个基类派生出的各个类的对象之间( )。

A、共享所有数据成员,每个对象还包含基类的所有属性

B、共享部分数据成员,每个对象还包含基类的所有属性

C、不共享任何数据成员,但每个对象

还包含基类的所有属性

D、共享部分数据成员和函数成员

5、C++的继承性允许派生类继承基类的()。

A、部分特性,并允许增加新的特性或重定义基类的特性

B、部分特性,但不允许增加新的特性或重定义基类的特性

C、所有特性,并允许增加新的特性或重定义基类的特性

D、所有特性,但不允许增加新的特性或重定义基类的特性

第二题、多项选择题(每题2分,5道题共10分)

1、如果是类B在类A的基础上构造,那么,就称()。

A、类A为基类或父类,类B为超类或子类

B、类A为基类、父类或超类,类B为派生类或子类

C、类A为派生类,类B为基类

D、类A为派生类或子类,类B为基类、父类或超类

2、对于公有继承,基类中的私有成员在派生类中将 ( )。

A、不能够直接使用成员名访问

B、能够通过成员运算符访问

C、仍然是基类的私有成员

D、变为派生类的私有成员

3、下列对派生类的描述中正确的说法是:()。

A、派生类至少有一个基类

B、派生类可作为另一个派生类的基类

C、派生类除了包含它直接定义的成员外,还包含其基类的成员

D、派生类所继承的基类成员的访问权限保持不变

4、含有虚基类的派生类的构造函数调用次序错误的是()

A、虚基类,基类,派生类,对象成员

B、基类,派生类,对象成员,虚基类

C、对象成员,基类,虚基类,派生类

D、基类,虚基类,对象成员,派生类

5、下面说法正确的是()

A、派生类指针可以直接指向基类对象

B、派生类指针可以强制转换为基类指针

C、派生类成员可以通过基类指针引用

D、基类指针可以指向派生类中对象

第三题、判断题(每题1分,5道题共5分)

1、基类的保护成员在私有派生类中是私有成员。

正确错误

2、基类的保护成员不能被派生类的对象访问。

正确错误

3、公有继承时基类中的protected成员在派生类中仍是protected的。

正确错误

4、构造函数可以被继承。

正确错误

5、多继承情况下,派生类的构造函数的执行顺序取决于定义派生时所指定的各基类的顺序。

正确错误

A、类

B、对象

C、包含文件

D、常量

2、在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是()

A、fail

B、eof

C、bad

D、good

3、在C++程序中使用的cin标识符是系统类库中定义的()类中的一个对象。

A、istream

B、ostream

C、iostream

D、fstream

4、相对于文本文件,下列关于二进制文件的说法中,不正确的是(D)

A、占用空间小

B、无法用常规的编辑工具看懂

C、执行效率高

D、可移植性好

5、fixed是输出格式中用到的状态标志,下列说法中,正确的是()

B、以定点格式显示浮点数值(没有指

A、以浮点格式显示浮点数值

数部分)

C、以定点格式显示浮点数值(有指数

D、以上说法都不正确

部分)

第二题、多项选择题(每题2分,5道题共10分)

1、对于输出流来说,用于文件位置定位的成员函数有( ):

A、ostream& ostream::seekg(streampos);

B、oistream& istream::seekg(streamoff,ios::seek_dir);

C、ostreampos istream::tellg();

D、ostream& ostream::seekp(streampos);

2、下面的说法正确的是()

A、输入输出流是指变量或者对象与外设之间的输入输出操作。

B、实现输入输出操作的cin和cout是C++的语句

C、流是用流类定义的对象,而流类是用于完成输入输出的类。

D、流是IO设备

3、c++提供的两种类型的流是()

A、字符流

B、字节流

C、文本流

D、二进制流

4、下面说法正确的是()

A、ios是所有流类的基类

B、iostream是istream类和ostream类的公有派生类

C、ifstream类是istream类的基类

D、fstream类是ifstream类的派生类

5、下面关于cin的说法正确的是()

A、cin是与标准设备链接的预定义输入流

B、运算符>>向cin发送字符

C、提取运算符读取键盘输入的所有字符,包括空格

D、一个语句中可以使用多个提取运算符

第三题、判断题(每题1分,5道题共5分)

1、使用提取符(<<)可以输出各种类型的变量的值,也可以输出指针值.

正确错误

2、二进制流将字节流的每个字节以二进制方式解释,它在数据传输时不作任何转换,故效率高,可移植性好。

正确错误

3、文件是指存储在存储器的数据的集合。计算机中的程序、数据、文档通常以文件方式存放。

正确错误

4、系统在主存中开辟的、用来临时存放输入输出数据的区域,叫做输入输出缓冲区(简称缓冲区)。

正确错误

ostrstream istrstream是从字符数组的输入流

正确错误

1、通过 ( ) 调用虚函数时,采用动态束定。

A、对象指针

B、对象名

C、成员名限定

D、派生类名

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

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

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

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

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

3、对于类定义 class A{ public: virtual void func1( ){ } void func2( ){ } }; class B:public A{ public: void func1( ){cout<<″ class B func 1 ″<<END1;}  virtual void func2 ( ){cout<<″ class B func 2 ″<<END1;}  }; 下面正确的叙述是 ( )

A、A::func2( ) 和 B::func1( ) 都是虚函数

B、A::func2( ) 和 B::func1( ) 都不是虚函数

C、B::func1( ) 是虚函数,而 A::f unc2( ) 不是虚函数

D、B::func1( ) 不是虚函数,而 A:: func2( ) 是虚函数

4、要实现动态联编必须( )

A、通过成员名限定来调用虚函数

B、通过对象名来调用虚函数

C、通过派生类对象来调用虚函数

D、通过对象指针或引用来调用虚函数

5、类A 中定义了虚函数f,类C是类A的派生类,类C中重新定义了虚函数f。声明变量: A a,*p1;

B b, *p2; 下面语句实现动态绑定的是()

A、a.f();

B、b.f();

C、p1=&b; p1->f();

D、p2=&b; p2->f();

第二题、多项选择题(每题2分,5道题共10分)

1、下面属于多态性的是()

A、函数重载

B、类模板

C、函数模板

D、派生类

2、关于虚函数的说法正确的是()

A、虚函数只能是成员函数

B、静态成员函数不能是虚函数

C、虚函数不能是内联函数

D、析构函数不能是虚函数

3、下面的说法正确的是()

A、抽象类只能做基类

B、抽象类是继承层次中的根

C、抽象类用abstract定义

D、抽象类中至少有一个虚函数

4、下列关于虚函数与函数重载区别的叙述中正确的是( )

A、函数说明形式上不同

B、函数重载允许是非成员函数,虚函数只能是成员函数

C、函数重载的调用依据参数和类型的差别,虚函数则依据对象

D、函数重载的本体可以在类外定义,虚函数不可以

5、当一个类的某个函数被说明为 virtual 时,下面说法错误的是( )

A、该函数在该类的所有派生类中都是虚函数

B、该函数在该类的所有派生类中只有被重新说明时才是虚函数

C、该函数在该类的所有派生类中只有被重新说明为 virtual 时才是虚函数

D、该函数在该类的所有派生类中都不是虚函数

第三题、判断题(每题1分,5道题共5分)

正确错误、动态联编是在运行时选定调用的成员函数的。

正确错误、纯虚函数是一种特殊的虚函数,它没有具体的实现

正确错误、一个基类说明有纯虚函数,该基类的派生类一定不再是抽象类

正确错误、抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。

正确错误

第一题、单项选择题(每题1分,5道题共5分)

1、throw后面的表达式不可以是()

A、常量

B、变量

C、对象

D、数组

2、下面哪些情况不会造成异常( )

A、内存耗尽

B、再次打开文件

C、除数为0

D、数组越界访问

3、关于异常的处理过程,正确的说法是()

A、在可能会出现错误的地方,用cat ch捕捉

B、在可能会出现错误的地方,用thr

ow抛出异常

C、catch块可以捕捉所有异常

D、只有与catch()参数匹配的异常

才可以捕捉

4、如果异常没有列入异常规范,在C++中将()

A、忽略它

B、程序中止

C、系统调用unexpected()终止程

D、询问用户

5、关于没有被捕捉的异常正确的说法是()

A、在catch块中没有处理的异常

B、未被捕捉的异常必然导致系统崩溃

C、如果一个异常没有被捕捉到,将调

D、忽略它

用terminate()函数终止程序运行

第二题、多项选择题(每题2分,5道题共10分)

1、处理程序中可预料的错误的方法有()

A、根据函数返回值进行判断处理

B、出现错误转向专门的错误处理程序

C、异常处理

D、没有办法

2、异常处理的优点是()

A、提高程序可读性

B、程序的控制不会因产生异常而随意跳转

C、正常处理代码和异常处理代码隐式分离

D、与函数调用返回的控制方法一致

3、关于异常处理的说法正确的是()

A、将异常的检测与处理分离

B、异常就是错误

C、异常由函数调用引起

D、在上层调用函数中使用try检测函数调用是否引发异常

4、下面的说法正确的是()

A、引发异常用关键字throw

B、在被调用函数中检测到异常条件用throw都可以引发异常

C、被调用函数只有在try块中用throw才可以引发异常

D、检测到的异常由catch捕获并处理

5、try子句的作用是()

A、代码的保护段

正确错误

、异常信号传递方式有三种:传值方式、引用方式和指针方式。

正确错误throw( )表示函数不会抛出任何类型的异常

正确错误

、如果没有异常规范表示函数不会抛出任何类型的异常。

正确错误处理程序的出现次序无关紧要。

正确错误

A B

C D

中算法访问容器的中介是(

A B

C D

、允许程序员以相同的方式处理不同的数据结构的是(

A B

C D

、向量(vector

A B

C、前向容器

D、双向容器

5、映射(map)属于( )

A、顺序容器

B、关联容器

C、前向容器

D、双向容器第二题、多项选择题(每题2分,5道题共10分)

1、从广义上讲,STL的代码分为三类,它们分别是()

A、容器

B、迭代器

C、算法

D、模板

2、下面是算法完成的工作的是()

A、计算

B、画流程图

C、操作容器对象

D、堆栈操作

3、下面的说法正确的是()

A、容器用于存放数据对象

B、算法用于操作容器中的数据对象

C、迭代器是容器的代替

D、迭代器用于链接容器和算法

4、下面关于迭代器的说法正确的是()

A、迭代器在STL中起关联作用,类似指针

B、迭代器在STL中定义,程序员不能自己定义

C、迭代器是一个对象在对应的容器上遍历

正确错误

的容器可以包含混合类型的对象,也就是说容器类可以包含一组相同类型或一组不同类型的对象。

正确错误

、迭代器是算法访问容器的中介。

正确错误

、前向容器是指一种长度可变的容器,直接继承于顺序容器

正确错误

、顺序容器是指一种长度可变的容器,它支持高效的数据查询和数据操作。

正确错误

A B

C D

、面向对象开发过程的核心是(

A B

C D

的作用是(

A B

C、求解域建模

D、分析用例

4、按钮与电梯按钮的关系是()

A、部分与整体

B、一般与特殊

C、实例连接

D、消息连接

5、关于功能模型的正确说法是()

A、功能模型表示变化的系统的功能性

B、功能模型反映用户需求

C、功能模型由一组用例组成

D、功能模型建立仿真模型第二题、多项选择题(每题2分,5道题共10分)

1、下面哪些属于UML的图( )

A、用例图

B、类图

C、结构图

D、流程图

2、关于封装的说法正确的是()

A、封装实现了信息隐藏

B、封装使对象与外界隔绝

C、封装使类不可见

D、封装将对象的属性和操作结合在一起

3、关于继承的说法正确的是()

A、一个类可以继承另一个类的属性和方法

B、继承可用于组建新类

C、继承是代码重用的手段

D、继承中子类可以修改父类属性

E、继承反映客观世界中一般性与特殊性的关系

F、基类是指一般类,而子类是指特殊类

4、对象之间存在的关系包括()

A、部分与整体

B、一般与特殊

C、实例连接

D、消息连接

5、下面关于面向对象的特征说法正确的是()

A、每一个对象都具有唯一的标识

B、任何类的划分都是客观的,程序员必须遵守其规定

C、继承性是子类自动共享父类数据结构和方法的机制

D、多态是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的

结果

第三题、判断题(每题1分,5道题共5分)

1、面向对象分析就是抽取和整理用户需求并建立问题域精确模型的过程.

正确错误

2、面向对象设计可直接继承分析阶段的类图和交互图等分析结果,然后确定每个类内部的数据和方法,以及每个方法的处理算法、过程和接口等。

正确错误

3、UML不是一种可视化的程序设计语言而是一种可视化的建模语言.

正确错误

4、UML视图用图描述,图用模型元素的图示符号表示。

正确错误

5、面向对象的共享性是指在同一个应用中的共享。

正确错误

相关文档
相关文档 最新文档