嵌入式C++测试题

仅供学习,为嵌入式帝国做亿分之一的贡献吧,临近国庆,祝大家国庆节快乐哦

 

 

 

 

答案仅供参考吧

一、 选择题(共 80 分, 每题 2 )
1A 2C 3C 4B 5D
6C 7C 8D 9A 10C
11A (12) B (13) D (14) B (15) A
16A 17C 18D 19D 20C
21C 22D 23D 24D 25A
26C (27) C (28) C (29) B (30) B
31A 32D 33D 34B 35A
36A 37B 38B 39C 40C
二、 填空题(每空 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. 动态联编是在编译时确定操作函数的
25、 语句 ofstream f(”SALARY. DAT"ios:: app iios:: binary);的功能是建立流对象 f,试图打开
文件 SAL:aRY. D AT 并与之连接, 并且( )
A)若文件存在, 将文件写指针定位于文件尾;若文件不存在, 建立一个新文件
B)若文件存在, 将其置为空文件;若文件不存在, 打开失败
C)若文件存在, 将文件写指针定位于文件首;若文件不存在, 建立一个新文件
D)若文件存在, 打开失败;若文件不存在, 建立一个新文件
26、 在语句 cin>>data;中, cin ( )
AC++的关键字
B) 类名
C) 对象名
D) 函数名
27、 下列有关模板的描述那些是错误的( )
A. 模板把数据类型作为一个设计参数, 称为参数化程序设计。
B. 模板参数除模板类型参数外, 还有非类型参数。
C. 类模板与模板类是同一概念。
D. 使用时, 模板参数与函数参数相同, 是按位置而不是名称对应的。

28、 有如下程序:
#include <iostream>
using namespace std;
class A{
public:
static int a;
void init(){a=1;}
A(int b=2) {init();
a++;}
};
int A::a=0;
A obj;
int main()
{
cout<<obj.a;
return 0;
}
行时输出的结果是(
)
A0 B1 C2 D3
29、 若有如下类声明
class My Class {
public:
MyClass() {cout<<1;}
};
执行下列语句
MyClass a,b[2],*P[2];
以后, 程序的输出结果是(
)
A11 B111 C1111 D11111


30、 有如下类声明:
#include<iostream.h>
class XA{ int x;
public: XA(int n ){x=n;} };
class XB public:XA
{ int y;
public: XB(int a,int b);
};
在构造函数 XB 的下列定义中,正确的是( )
A XB::XB(int a,int b):x(a),y(b){}
B XB::XB(int a,int b):XA(a),y(b){}
C XB::XB(int a,int b):x(a),XB(b){}
D XB::XB(int a,int b):XA(a),XB(b){}
31、 面向对象程序设计的三大特点是__ ___。
A. 封装 继承 多态
B. 私有 公有 保护
C. 友员 重载 继承
D. 构造 析构 封装
32、 构造函数不具备的特征的是__ ___。
A. 构造函数的函数名与类名相同
B. 构造函数可以重载
C. 构造函数可以设置默认参数
D. 构造函数必须指定返回类型
33、 类的析构函数的作用是__ ___。
A. 一般成员函数的初始化
B. 类的初始化
C. 对象的初始化
D. 在对象的生存期结束之前自动执行, 作清理工作
34、 下面关于友员函数的描述不正确的是__ ___
A. 可以将一个普通函数声明为某类的友员函数, 友员函数可以访问该类的私有成员和
保护成员;
B. 友员函数具有传递性和交换性
C. 将 A 类声明为 B 类的友员类, 则 A 类所有的成员函数都是 B 类的友员函数
D. 友员函数在类中声明, 不能在在类中定义;
35、 重载运算符时, 运算符的__ ___
A. 优先级和结合律均保持不变;
B. 优先级和结合律均可以改变。
C. 优先级可以改变, 但结合律不能改变;
D. 优先级不能改变, 但结合律可以改变;
36、 下面四个选项中, __ ___是用来声明虚函数的。
A. virtual B. public C. using D. false
37、 在 C++中, 对于基类的 protected 成员, 当以 protected 方式派生一个新类时。 该成员
将成为派生类的_____成员。
A. private B. protected C. public D. 非法
38、 下列关于虚基类的描述, 错误的是__ ___。
A. 设置虚基类的目的是为了消除二义性
B. 虚基类的构造函数在非虚基类之后调用
C. 若同一层中包含多个虚基类, 这些虚基类的构造函数按它们说明的次序调用
D. 若虚基类由非虚基类派生而来, 则仍然先调用基类构造函数, 再调用派生类的构造
函数
39. 假定 AB 为一个类, 则该类的拷贝构造函数的声明语句为__ _______.
AAB&(AB x);
BAB(AB x)
CAB( AB & x)
DAB(AB * x)
40、 下面程序的运行结果为
#include<iostream. h>
class A
{
public:
A(){cout<<"1";}
~A(){cout<<"2";}
};
class B:public A
{ p
ublic:
B(){cout<<"3";}
~B(){cout<<"4";}
};
void main()
{
B b;
} A
1234 B1324 C1342 D3142
二、 填空题(20 分, 每空 1 分)
1. 当建立一个新对象时, 程序自动调用该对象的_______________函数
2. 友元函数用关键字________说明, 它可以访问类对象的 成员。
3. 当创建派生类的对象时, 要初始化两部分的数据成员(继承的和新增加的), 因此要使
用基类的构造函数和派生类的构造函数, 这两个构造函数的调用顺序是

4、 继承的方式有 和多重继承
5、 虚拟继承的关键字是
6C++中, 多态性包含两种:
7、 包含纯虚函数的类称为
8、 文件流类的 eof()成员函数的功能是



9、 运算符重载的形式有两种: 重载为类的__ ____ _和类的友元函数.

10C++引入了三个关键字 ,用于异常处理。
11、 C++引入模板的意义是
12、 运算符重载的形式有两种: 重载为类的成员函数和__
____ _
13C++ 处理的机制是: ______ ___ ____ _和处理异常。
14、 定义函数模板和类模板的关键字是__ ____ _
15STL 的意思是______ _




 

posted @ 2019-09-24 16:11  熏五空--嵌入式  阅读(551)  评论(0编辑  收藏  举报