仅供学习,为嵌入式帝国做亿分之一的贡献吧,临近国庆,祝大家国庆节快乐哦
答案仅供参考吧
一、 选择题(共 80 分, 每题 2 分)
(1) A (2) C (3) C (4) B (5) D
(6) C (7) C (8) D (9) A (10) C
(11) A (12) B (13) D (14) B (15) A
(16) A (17) C (18) D (19) D (20) C
(21) C (22) D (23) D (24) D (25) A
(26) C (27) C (28) C (29) B (30) B
(31) A (32) D (33) D (34) B (35) A
(36) A (37) B (38) B (39) C (40) C
二、 填空题(每空 1 分, 共 20 分)
1. 构造函数
2. friend 保护和私有成员
3. 先基类在派生类
4. 单一继承
5. virtual
6. 静态多态性 动态多态性
7. 抽象类
8. 测试是否文件尾
9. 成员函数
10. try throw catch
11. 代码复用和泛型程序设计
12. 类的友元函数
13. 抛出异常 捕捉异常
14. template
15. 标准模板库
一、 单选题(共 80 分, 每题 2 分)
1.下列关于类和对象的描述中,错误的是( )
A. 一个类只能有一个对象 B. 对象是类的具体实例
C. 类是对某一类对象的抽象 D. 类和对象的关系是一种数据类型与变量的关系.
2.有如下类声明:
class Foo
{ int bar; };
则 Foo 类的成员 bar 是( )
A 公有数据成员 B. 公有成员函数 C. 私有数据成员 D. 私有成员函数
3.下列有关继承和派生的叙述中, 正确的是( )
A. 派生类不能访问基类的保护成员
B. 作为虚基类的类不能被实例化
C. 派生类应当向基类的构造函数传递参数
D. 虚函数必须在派生类中重新实现
4.在类的定义中, 用于为对象分配内存空间, 对类的数据成员进行初始化并执行其他内部管
理操作的函数是( )
A. 友元函数 B. 构造函数
C. 虚函数 D. 析构函数
5.下列关于 this 指针的叙述中,正确的是( )
A. 任何与类相关的函数都有 this 指针
B. 类的成员函数都有 this 指针
C. 类的友元函数都有 this 指针
D. 类的非静态成员函数都有 this 指针
6. 下列关于虚函数的描述中,正确的是( )
A. 虚函数是一个 static 类型的成员函数.
B. 虚函数是非成员函数.
C. 基类中采用 virtual说明一个虚函数后,派生类中定义相同原型的函数时不必加 virtual
说明
D. 派生类中虚函数与基类中的虚函数具有不同的参数个数和类型.
7.下面对于友元函数描述正确的是( )
A. 友元函数的实现必须在类的内部定义
B. 友元函数是类的成员函数
C. 友元函数破坏了类的封装性和隐藏性
D. 友元函数不能访问类的私有成员
8.下列关于运算符重载的描述中,正确的是( ).
A. 运算符重载可以改变操作数的个数
B. 运算符重载可以改变优先级
C. 运算符重载可以改变结合性
D. 运算符重载不可以改变语法结构
9. 关于动态联编的下列描述中,错误的是( ).
A. 动态联编是在编译时确定操作函数的
B. 动态联编是在运行时确定所调用的函数代码的
C. 动态联编调用函数操作是用指向对象的指针或引用
D. 动态联编是以虚函数为基础的
10 设计一个自定义类时, 需要在屏幕上显示或向文件写入类对象的数据, 最佳选择方法是
( )。
A. 为屏幕显示和文件写入各自设计一个成员函数。
B. 为屏幕显示和文件写入统一设计一个成员函数。
C. 重载插入运算符(<<)。
D. 重载提取运算符(>>)。
11、 有如下程序:
#include<iostream.h>
class Test
{ p
ublic:
Test() {n+=2;}
~Test() {n-=3;}
static int getNum(){return n;}
private: static int n;
};
int Test::n=1;
void main()
{
Test* p=new Test;
delete p;
cout<<"n="<<Test.getNum()<<endl;
} 执
行后的输出结果是( )
A. n=0 B. n=1 C . n=2 D. n=3
12、 有如下类声明:.
class MyBASE
{ int k;
public:
void set(int n){k=n;}
int get() const {return k;}
};
class MyDERIVED:proteceed MyBASE
{ p
rotected: int j;
public:
void set(int m,int n)
{MyBASE::set(m);j=n;}
int get() const{return MyBASE::get()+j;}
};
则类 MyDERIVED 中保护的数据成员和成员函数的个数是( )
A. 4 B. 3 C. 2 D. 1
13、 有如下程序:
#include<iostream.h>
class A{ public: A(){cout<<"A";} };
class B{ public: B(){cout<<"B";} };
class C:public A{
B b;
public: C(){cout<<"C";}
};
void main()
{
C obj;
} 执
行后的输出结果是( )
A. CBA B. BAC C.ACB D.ABC
14、 有如下程序:
#include<iostream.h>
class BASE{
protected: int i;
public: int j;
};
class DERIVED :public BASE
{ int m;
public: int n;
};
void main()
{
DERIVED c;
c.i=0; //[1]
c.j=0; //[2]
c.m=0; //[3]
c.n=0; //[4]
}
其中主函数中有两个赋值语句有错,这两个错误的赋值语句是( )
A.[1]和[2] B.[1]和[3] C. [2]和[3] D. [2]和[4]
15、 已知:print()函数是一个类的常成员函数,它无返回值,下列表示中正确的是( )
A. void print() const;
B. const void print();
C. void const print();
D. void print(const);
16、 对类的构造函数和析构函数描述正确的是( )
A)构造函数可以重载, 析构函数不能重载
B)构造函数不能重载, 析构函数可以重载
C)构造函数可以重载, 析构函数也可以重载
D)构造函数不能重载, 析构函数也不能重载
17、 下列的各种函数中,不属于类的成员函数的是( )
A.构造函数 B.析构函数 C. 友元函数 D.拷贝构造函数
18、 可以用 p.a 的形式访问派生类对象 P 的基类成员 a,其中 a 是( )
A)私有继承的公有成员 B)公有继承的私有成员 C)公有继承的保护成员 D)公有继承的公有成员 19、 类的析构函数的作用是( |
) |
A)一般成员函数的初始化 | B)类的初始化 |
C)对象的初始化 | D)删除类创建的对象 |
20、 下列是关于派生类声明的开始部分,其中正确的是( | ) |
A. | class virtual B :public A |
B. | virtual class B :public A |
C. | class B :public virtual A |
D. | class B :public A virtual |
21、 在公有派生情况下, 有关派生类对象和基类对象的关系, 下列叙述不正确的是( | ) |
A)派生类的对象可以赋给基类的对象 B)派生类的对象可以初始化基类的引用 C)派生类的对象可以直接访问基类中的成员 D)派生类的对象的地址可以赋给指向基类的指针 22、 下面对静态数据成员的描述中, 正确的是( |
) |
A)静态数据成员可以在类体内进行初始化
B)静态数据成员不可以被类的对象调用
C)静态数据成员不能受 private 控制符的作用
D)静态数据成员可以直接用类名调用
23、 下列描述中,抽象类的特性是( )
A.可以说明虚函数
B.可以进行构造函数重载
C.可以定义友元函数
D.不能说明其对象
24、 关于动态联编的下列描述中,错误的是( )
A. 动态联编是以虚函数为基础的
B. 动态联编是在运行时确定所调用的函数代码的
C. 动态联编调用函数操作是用指向对象的指针或引用
D.