是一个抽象类,下列语句中错误的是( )。
(2分)
A. C1 *pC;
B. void fun(C1 arg);
C. void fun(C1 *arg);
D. void fun(C1 &arg);
我的答案:
C
题目得分 0
参考答案:
B
下列关于说法中,正确的是( )。
(2分)
A. 类的虚函数中,不能访问this指针
B. 类的静态成员函数中,不能访问this指针
C. 类的友员函数中,不能访问this指针
D. 类的构造函数中,不能访问this指针
我的答案:
B
题目得分 2
参考答案:
B
有如下类定义:
class Animal {
public:
virtual void Name() = 0;
};
class Koala :public Animal {
public:
void Name() { /* 函数体略 */ }
};
关于上述类定义,下列描述中错误的是( )。
(2分)
A. 类Koala是类Animal的派生类
B. 类Koala中的Name函数是一个虚函数
C. 类Animal中的Name函数是一个纯虚函数
D. 语句“Animal a;”能够建立类Animal的一个对象a
我的答案:
D
题目得分 2
参考答案:
D
关于基类中的虚函数与一般成员函数,正确的是( )。
(2分)
A. 虚函数只能定义一个,而一般成员函数可以多个
B. 虚函数与一般成员函数在基类中没什么区别
C. 虚函数不能定义函数体,而一般成员函数可以
D. 虚函数不能被调用,而一般成员函数可以
我的答案:
C
题目得分 0
参考答案:
B
基类中的虚函数如果在派生类中未重新定义,则会出现( )的情况。
(2分)
A. 无法使用派生类的对象调用这个函数
B. 不允许定义派生类的对象
C. 无法使用基类的对象调用这个函数
D. 使用派生类的对象调用的仍然是基类的这个函数
我的答案:
D
题目得分 2
参考答案:
D
关于抽象类,下列说法正确的是( )。
(2分)
A. 纯虚函数与虚函数的声明语法相同
B. 可用new操作符来生成抽象类的对象
C. 带有纯虚函数的类称为抽象类
我的答案:
C
题目得分 2
参考答案:
C
下面有关封装、继承、多态的描述,说法错误的是( )。
(2分)
A. 封装是指把客观事物封装成抽象的类,类的数据和函数只让可信的类或对象操作,不可信的则信息隐藏
B. 继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展
C. 隐藏是指派生类中的函数把基类中相同名字的函数屏蔽掉了
D. 覆盖是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同
我的答案:
C
题目得分 0
参考答案:
D
关于函数模板,下列说法正确的是( )。
(2分)
A. 一个函数模板可以自动处理所有类型的数据
B. 只有能够进行函数模板中运算的类型,才可以作为类型实参
C. 自定义的类,不需要重载模板中的运算符,也可以作为类型实参
我的答案:
C
题目得分 0
参考答案:
B
下面( )派生是不可行的。
(2分)
A. 从类模版派生出类模版
B. 从模版类派生出类模版
C. 从类模版派生出普通类
D. 从普通类派生出类模版
我的答案:
D
题目得分 0
参考答案:
C
下面的说法中正确的是( )。
(2分)
A. 将一个对象放入STL中的容器里时,实际上被放入的是该对象的一个拷贝(副本)
B. 构造函数不可以重载
C. const成员函数内部不能修改成员变量的值,但是可以调用非const成员函数
D. 只有定义时用了virtual关键字的成员函数才是虚函数
我的答案:
C
题目得分 0
参考答案:
A
下列关于容器的end()成员函数的功能,正确的是( )。
(2分)
A. 判断是否为容器末尾
B. 返回最后一个元素的引用
C. 返回指向最后一个元素的迭代器
D. 返回指向最后一个元素下一个位置的迭代器
我的答案:
D
题目得分 2
参考答案:
D
下列关于迭代器,说法正确的是( )。
(2分)
A. 迭代器不直接操作容器中的数据,而是通过算法间接操作
B. 算法和迭代器之间不是相互独立而是互相依赖的
C. 迭代器是算法和容器的桥梁
我的答案:
C
题目得分 2
参考答案:
C
STL的算法模板binary_search可用于下列( )容器。
(2分)
A. map
B. vector
C. set
D. list
我的答案:
B
题目得分 2
参考答案:
B
以下对于map的使用中,可以正确输出15的是( )。
(2分)
A.
map<int, int> maps;
maps.insert(10, 15);
cout << maps.find(10)->second << endl;
B.
map<int, int> maps;
maps.insert(pair<int, int> (10, 15));
cout << maps.find(10)->second << endl;
C.
map<int, int> maps;
maps.insert(pair(10, 15));
cout << maps.find(10)->second << endl;
我的答案:
B
题目得分 2
参考答案:
B
若要使下面程序片段能够编译通过,对于类A,以下( )运算符不是必须有定义的。
class A { /* 类体略 */ };
A obj;
int a[] = {1, 2, 3, 4, 5};
copy(a, a + 5, obj);
(2分)
A. ++obj
B. --obj
C. *obj
D. 以上三个都可以没定义
我的答案:
C
题目得分 0
参考答案:
B
在已经包含头文件的情况下,下列文件操作的程序片段在语法上正确的是( )。
(2分)
A.
int x = 0;
ifstream myfile;
myfile.open("a");
myfile << x;
if(myfile.eof())
cout << x << ": end of file" << endl;
B.
int x = 0;
ifstream myfile('a');
myfile >> x;
if(myfile.eof())
cout << x << ": end of file" << endl;
C.
int x = 0;
ifstream myfile;
myfile.Open("a");
myfile >> x;
if(myfile.eof())
cout << x << ": end of file" << endl;
D.
int x = 0;
ifstream myfile("a");
myfile >> x;
if(myfile.eof())
cout << x << ": end of file" << endl;
我的答案:
C
题目得分 0
参考答案:
D
下列程序的输出结果是( )。
classA {
public:
void FuncA() {
cout << "FuncA called\n";
}
virtual void FuncB() {
cout << "FuncB called\n";
}
};
classB : public A {
public:
void FuncA() {
A::FuncA();
cout << "FuncAB called\n";
}
virtual void FuncB() {
cout << "FuncBB called\n";
}
};
int main() {
Bb;
A *pa;
pa = &b;
A *pa2 = new A;
pa->FuncA();
pa->FuncB();
pa2->FuncA();
pa2->FuncB();
delete pa2;
return 0;
}
(2分)
A.
FuncA called
FuncB called
FuncA called
FuncB called
B.
FuncA called
FuncBB called
FuncA called
FuncB called
C.
FuncA called
FuncBB called
FuncAB called
FuncBB called
D.
FuncAB called
FuncBB called
FuncA called
FuncB called
我的答案:
B
题目得分 2
参考答案:
B
下列关于构造组合类对象时的初始化次序说法错误的是( )。
(2分)
A. 处理完初始化列表之后,再执行构造函数的函数体
B. 成员对象构造函数调用顺序:按成员对象的声明顺序,先声明者先构造
C. 首先对构造函数初始化列表中列出的成员进行初始化,初始化次序是成员在类体中定义的次序
D. 初始化列表中未出现的成员对象,不进行初始化
我的答案:
D
题目得分 2
参考答案:
D
运算符重载是对已有的运算符赋予多重含义,下列说法正确的是( )。
(2分)
A. 可以对基本类型(如 int 类型)的数据,重新定义“ +”运算符的含义
B. 可以改变已有运算符的优先级和其操作数个数
C. 只能重载 C++中已经有的运算符,不能定义新运算符
D. C++中已经有的所有运算符都可以重载
我的答案:
A
题目得分 0
参考答案:
C
下列关于纯虚函数和抽象类的描述中,不正确的是( )。
(2分)
A. 纯虚函数是一个没有具体实现的虚函数
B. 抽象类是包括纯虚函数的类
C. 抽象类只能作为基类,其纯虚函数的实现在派生类中必须给出
D. 抽象类可以实例化
我的答案:
D
题目得分 2
参考答案:
D
写、执行 C++程序一般需要经过的几个步骤依次是( )。
(2分)
A. 编辑、执行
B. 编辑、连接、执行
C. 编辑、编译、连接、执行
D. 编辑、连接、编译、执行
我的答案:
C
题目得分 2
参考答案:
C
#include <file.h>与 #include "file.h"的区别是( )。
(2分)
A. 前者首先从当前工作路径搜寻并引用file.h,而后者首先从标准库的路径寻找和引用file.h
B. 前者首先从标准库的路径寻找和引用file.h,而后者首先从当前工作路径搜寻并引用file.h
C. 两者都是首先从标准库的路径寻找和引用file.h
D. 两者都是首先从当前工作路径搜寻并引用file.h
我的答案:
B
题目得分 2
参考答案:
B
头文件中的ifndef/define/endif的作用是( )。
(2分)
A. 定义常量
B. 标记为特殊的头文件
C. 防止头文件被重复引用
D. 注释头文件
我的答案:
C
题目得分 2
参考答案:
C
在一个程序中,如果函数fA调用了函数fB,函数fB又调用了函数fA,那么( )。
(2分)
A. 称为函数的循环调用
B. 这样调用方式是不允许的
C. 称为函数的直接递归调用
D. 称为函数的间接递归调用
我的答案:
D
题目得分 2
参考答案:
D
引入内联函数的目的是为了( )。
(2分)
A. 方便变量的使用
B. 提高函数调用的效率
C. 扩大局部变量的使用