一、选择(20题20分)
1. 关于string类的说法不正确的是()B
A.string类的两个对象可以直接用关系运算符比较大小。比如s1>s2。 B.string类的两个对象不能直接相加,如表达式s1+s2语法错误。 C.string是C++标准模板库中的一个字符串类,包含在头文件string中 D.string类对象中存储的字符串的长度不能用strlen( )函数计算。 2. 关于引用的说法正确的是()C
A. 引用用&来标识,定义引用时可以只声明引用,不需要对引用初始化。 B. 引用不能用不同类型的变量进行初始化。
C. 引用主要用作函数参数,以扩充函数传递数据的功能。 D.以上说法均不正确。 3.下列对重载函数的描述中,()是错误的。 A PTA A.重载函数中不允许使用默认参数 B.重载函数中编译根据参数表进行选择 C.不要使用重载函数来描述毫无相干的函数 D.构造函数重载将会给初始化带来多种方式 4. 下面有关类说法不正确的是()C A. 一个类可以有多个构造函数 B. 一个类只有一个析构函数 C. 析构函数需要指定参数
D. 在一个类中可以说明具有类类型的数据成员 5. 类成员的默认访问属性是( A ) A. private B.protected C.public
D.以上答案都不对
6.this指针存在的目的是() C
A. 保证基类私有成员在子类中可以被访问 B. 保证基类保护成员在子类中可以被访问
C. 保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码 D. 保证基类公有成员在子类中可以被访问 7.静态成员函数没有() B A.返回值 B. this指针 C. 指针参数 D. 返回类型
8. 类MyClass的拷贝初始化构造函数是()C A. MyClass()
B. MyClass(MyClass *) C. MyClass(MyClass&) D. MyClass (MyClass)
9. 关于静态成员函数及常成员函数的说法不正确的是()B
A.静态成员函数用static关键字声明,且static在函数首部的最前面;常成员函数用const关键字声明,但const需要放在函数首部的最后面。
B.静态成员函数只能访问静态数据成员。 C. 常对象只能调用常成员函数。
D.常成员函数可以访问类中的const数据成员及非const数据成员,但不可改变它们。 10.一个类的私有成员 ( ) B A.只能被该类的成员函数访问
B.只能被该类的成员函数和友元函数访问
C.只能被该类的成员函数、友元函数和派生类访问 D.以上答案都不对
11. C++类体系中,不能被派生类继承的有()B A. 常成员函数 B. 构造函数 C. 虚函数
D. 静态成员函数
12. 在公有继承的情况下,基类的公有或保护成员在派生类中的访问权限()B A. 受限制 B. 保持不变 C. 受保护 D. 不受保护 13.在C++语言中设置虚基类的目的是() C A.简化程序代码
B.提高程序的运行效率
C.解决多继承造成的二义性问题 D.缩短程序的目标代码
14.关于纯虚函数和抽象类的描述中,(C )是错误的。 A.纯虚函数是一种特殊的虚函数,它没有具体的实现 B.抽象类是指具有纯虚函数的类
C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类 D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出 15.有关多态性说法不正确的是() C
A. C++语言的多态性分为编译时的多态性和运行时的多态性 B. 编译时的多态性可通过函数重载实现 C. 运行时的多态性可通过模板和虚函数实现 D. 实现运行时多态性的机制称为动态多态性
16. 实现两个相同类型数加法的函数模板的声明是()D A. add(T x,T y) B. T add(x,y) C. T add(T x,y) D. T add(T x,T y)
17. 已知类模板的定义如下: template
public: A(T x):item(x){ }; T func(T a); friend void show(const A
friend void disp(U&u); private: T item; };
以下说法不正确的是()A
A.用类A声明对象a的语句是 A
推演类A的数据类型是int。 B. 类外定义函数func( )的基本格式是 template
void show(const A C.cout.setf(ios::uppercase) D.cin.fill('#') 19.下列关于异常处理的说法不正确的是()C A.异常处理的throw与catch通常不在同一个函数中,实现异常检测与异常处理的分离。 B.catch语句块必须跟在try语句块的后面,一个try语句块后可以有多个catch语句块。 C.在对函数进行异常规范声明时,若形参表后没有任何表示抛出异常类型的说明,它表示 该函数不能抛出任何异常。 D.catch语句块中,catch(…)表示该catch可以捕捉任意类型的异常,必须将catch(…)放在catch 结构的最后。 20.有关STL容器的说法不正确的是()C A. 序列式容器中的数据的顺序与数据的操作顺序相关,而关联式容器中的数据的顺序由数 据的关键字大小决定,与数据的操作顺序无关。 B.如果需要执行大量的随机访问操作,就应当选择向量容器;如果需要执行大量的随机插入 或删除元素操作,就应当选择列表容器。 C.关联型容器内部结构实现为一个二叉树,它可以高效地查找容器中的每一个元素,能够 实现任意位置的操作。 D.集合中的元素不可能直接被修改,若要修改某一元素的值,必须先删除原有的元素,再 插入新的元素。 一、 选择题(20分) 1. 关于类和对象不正确的说法是:( C ) A.类是一种类型,它封装了数据和操作 B.对象是类的实例 C.一个类的对象只能有一个 D.一个对象必属于某个类 2. 关于new运算符的下列描述,(D )是错误的。 A.它可以用来动态创建对象和对象数组 B. 使用它创建的对象或对象数组,可以使用运算符delete删除 C. 使用它创建对象时要自动调用构造函数 D. 使用它创建数组时不可以对数组初始化 3. 类成员的默认访问属性是:A A. private B. protected C. public D. 以上答案都不对 4. 假定MyClass为一个类,则该类的拷贝构造函数的声明语句为(C) A.MyClass(MyClass x) B. MyClass&(MyClass x) C. MyClass(MyClass&x) D. MyClass(MyClass *x) 5. 对于类之间的友元关系:D A. 如果类A是类B的友元,则B的成员函数可以访问A的私有成员 B. 如果类A是类B的友元,则B也是A的友元。 C. 如果类A是类B的友元,并且类B是类C的友元,则类A也是类C的友元。 D. 以上答案都不对。 6. 要让一个类的所有对象具有共同的数据,可使用(C)。 A 常数据成员 B 私有数据成员 C 静态数据成员 D 以上都是 7. 对于常成员函数,下列描述正确的是(C) A. 常成员函数只能修改常数据成员 B. 常成员函数只能修改一般数据成员 C. 常成员函数不能修改任何数据成员 D. 常成员函数只能通过常对象调用 8. 基类Base及它的派生类Drive类都有无参的构造函数,则下面语句错误的是(B)。 A Base b; Drive d; b=d; B Base b; Drive d; d=b; C. Drive *pd; Drive d; pd=&d; D. Base *pb; Drive d; pb=&d; 9. 在C++语言中设置虚基类的目的是(C)。 A. 简化程序代码 B. 提高程序的运行效率 C. 解决多继承造成的二义性问题 D. 缩短程序的目标代码 10. 下列关于虚函数的描述中,(C)是正确的。 A 虚函数是一个static类型的成员函数 B 虚函数是一个非成员函数 C 基类中说明了虚函数后,派生类中与其对应的函数可以不必加virtual关键字,自动成为虚函数 D 派生类的虚函数与基类中的虚函数具有不同的参数个数和参数类型 11. 下列有关继承和派生的叙述中,正确的是:C A. 派生类不能访问通过私有继承的基类的保护成员 B. 多继承的虚基类不能够实例化 C. 如果基类没有默认构造函数,派生类就应当定义带形参的构造函数 D. 类的的析构函数和虚函数都不能够被继承,需要在派生类中重新实现 12. 下列关于运算符重载的描述中,错误的是(B)。 A 运算符重载不改变优先级 B 所有的运算符都可以重载 C 运算符重载不改变结合性 D 运算符重载函数的参数个数与重载方式有关 13. cout是由I/O 流库预定义的(B)。 E. 类 F. 对象 G. 包含文件 H. 常量 14. 下列关于模板的描述正确的是(A ) A. 函数模板在调用时可以显式指定实例化的数据类型,也可以根据传入的实参推演得出其实例化的数据类型 B. 类模板在调用时可以显式指定实例化的数据类型,也可以根据传入的实参推演得出其实例化的数据类型 C.模板参数可以是类型参数、非类型参数,不能是另一个模板 D. 类模板只能派生类模板,不能派生普通类 15.要求打开文件D:\\file.dat,并能够写入数据,正确的语句是( D )。 A.ifstreaminfile(\B. ifstreaminfile(\C. ofstreamoutfile(\ D.fstreaminfile(\ 16. 现有程序代码如下,输出结果为(C)