1-1 使用提取符(<<)可以输出各种基本数据类型的变量的值,也可以输出指针值。 (2分) T
1-2 预定义的插入符从键盘上接收数据是不带缓冲区的。 (2分) F
1-3 The cin stream normally is connected to the display screen. (2分) F
【cout 对象通常连接到标准输出设备,一般是显示屏】
2-1命名空间应用于: (2分)
在类外定义类的成员函数 √避免各个不同函数、变量等的名称冲突 提高代码的执行速度 以上答案都正确
2-2cout 是由I/O 流库预定义的( )。 (2分)
类 √对象 包含文件 常量
2-1 重载函数在调用时选择的依据中,错误的是()。 (2分)
函数的参数 参数的类型 函数的名字 √函数的类型
2-2 对定义重载函数的下列要求中,( )是错误的。 (2分)
要求参数的个数不同 要求参数中至少有一个类型不同 √要求函数的返回值不同 要求参数个数相同时,参数类型不同
1-1 函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。 (1分) T
1-3The types of arguments in a function call must match the types of the corresponding parameters in the function prototype’s parameter list.。 (2分) T
1-4 在C++语言中引入内联函数(inline function)的主要目的是降低空间复杂度,即缩短目标代码长度。 (2分) F
2-1
关于new运算符的下列描述中,()是错误的。 (2分)
它可以用来动态创建对象和对象数组; 使用它创建的对象或对象数组可以使用运算符delete删除; 使用它创建对象时要调用构造函数; √使用它创建对象数组时必须指定初始值;
2-2关于delete运算符的下列描述中,()是错误的。 (2分)
它必须用于new返回的指针; 使用它删除对象时要调用析构函数; √对一个指针可以使用多次该运算符; 指针名前只有一对方括号符号,不管所删除数组的维数。
2-3 以下程序中,new语句干了什么。 (2分)
int** num;
num = new int* [20];
分配了长度为20的整数数组空间,并将首元素的指针返回。 分配了一个整数变量的空间,并将其初始化为20。 √分配了长度为20的整数指针数组空间,并将num[0]的指针返回。 存在错误,编译不能通过。
2-4 以下程序存在的问题是: (2分)
void fun()
{
int *num1, *num2;
num1 = new int[10];
num2 = new int[20];
num1[0] = 100;
num2[0] = 300;
num1 = num2;
delete [] num1;
}
num2不能给num1赋值 num2最初指向的空间没有释放 √num1最初指向的空间没有释放 程序没有问题
2-5 设void f1(int * m,long & n);int a;long b;则以下调用合法的是()。 (2分)
f1(a,b); √f1(&a,b); f1(a,&b); f1(&a,&b);
2-7 一个函数功能不太复杂,但要求被频繁调用,选用( )。 (2分)
√内联函数 重载函数 递归函数 嵌套函数
2-8 重载函数在调用时选择的依据中,错误的是()。 (2分)
函数的参数 参数的类型 函数的名字 √函数的类型
2-9 在( )情况下适宜采用inline定义内联函数。 (2分)
函数体含有循环语句 函数体含有递归语句 √函数代码少、频繁调用 函数代码多、不常调用
2-11 下面说法正确的是()。 (2分)
内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 √内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 类的内联函数必须在类体内定义 类的内联函数必须在类体外通过加关键字inline定义
2-12 对定义重载函数的下列要求中,( )是错误的。 (2分)
要求参数的个数不同 要求参数中至少有一个类型不同 √要求函数的返回值不同 要求参数个数相同时,参数类型不同
1-1重载函数可以带有默认值参数,但是要注意二义性。 (1分) T
2-1 命名空间应用于: (2分)
在类外定义类的成员函数 √避免各个不同函数、变量等的名称冲突 提高代码的执行速度 以上答案都正确
2-2如果在函数中定义的局部变量与命名空间中的变量同名时,()被隐藏。 (2分)
函数中的变量 √命名空间中的变量 两个变量都 两个变量都不
2-3如果程序中使用了using命令同时引用了多个命名空间,并且命名空间中存在相同的函数,将出现: (2分)
√编译错误 语法错误 逻辑错误 无法判定错误类型
2-4要说明标识符是属于哪个命名空间时,需要在标识符和命名空间名字之间加上: (2分)
√:: -> . ( )
2-5如果默认参数的函数声明为“ void fun(int a,int b=1,char c=’a’,float d=3.2);”, 则下面调用写法正确的是( )。 (2分)
fun(); √fun(2,3); fun(2, ,'c',3.14) fun(int a=1);
2-1 给定以下类声明,哪个成员函数可能改变成员变量data? (2分)
class A {
public:
void f1 (int d);
void f2 (const int &d);
void f3 (int d) const;
private:
int data;
};
f1 f2 f3 √f1和f2
对于常成员函数,无论是声明还是定义,都需要加const限定,常成员函数可以访问const数据成员,也可以访问非const数据成员,注意是只是访问,但不可以修改。反过来,const数据成员可以被const成员函数访问,也可以被非const的成员函数访问。
参考const详细解释
2-5
在面向对象的软件系统中,不同类对象之间的通信的一种构造称为_。 (2分)
属性 封装 类 √消息
2-3 设A为自定义类,现有普通函数int fun(A& x)。则在该函数被调用]时: (2分)
将执行复制构造函数来初始化形参x 仅在实参为常量时,才会执行复制构造函数以初始化形参x √无需初始化形参x 仅在该函数为A类的友元函数时,无需初始化形参x
2-4 所有类都应该有: (2分)
构造函数 析构函数 √构造函数和析构函数 以上答案都不对
1-1 在protected保护继承中,对于垂直访问等同于公有继承,对于水平访问等同于私有继承。 (1分)T
【protected除了自己可以访问,允许派生类的访问】
2-4 建立派生类对象时, 3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数),这3种构造函数的调用顺序为 (2分)
√abc acb cab cba
2-1 下列有关继承和派生的叙述中,正确的是: (2分)
派生类不能访问通过私有继承的基类的保护成员 多继承的虚基类不能够实例化 √如果基类没有默认构造函数,派生类就应当定义带形参的构造函数 类的的析构函数和虚函数都不能够被继承,需要在派生类中重新实现
关于函数模板,描述错误的是。 (2分)
√函数模板必须由程序员实例化为可执行的函数模板 函数模板的实例化由编译器实现 一个类定义中,只要有一个函数模板,则这个类是类模板 类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化
1-1 可以通过下标随机访问向量vector中的元素。 (1分) T
1-2 当向量对象的内存用完之后,就会产生越界错误。 (1分) F
1-4 In C++, only existing operators can be overloaded. (1分) T
1-1 虚函数是用virtual 关键字说明的成员函数。 (1分) T
1-2 动态绑定是在运行时选定调用的成员函数的。 (1分)T
1-3 构造函数可以声明为虚函数。 (1分) F
1-4 构造函数可以声明为纯虚函数。 (1分) F
1-5 虚函数不能是类的静态成员。 (1分)T
1-6 重定义虚函数的派生类必须是公有继承的。 (1分)T
1-7作为虚函数隐含参数的this指针,决定了虚函数调用时执行的代码。 (1分)T
2-4 虚析构函数的作用是。 (2分)
虚基类必须定义虚析构函数 类对象作用域结束时释放资源 √delete动态对象时释放资源 无意义
2-7
以下关于文件操作的叙述中,不正确的是: (2分)
打开文件的目的是使文件对象与磁盘文件建立联系 √文件读写过程中,程序将直接与磁盘文件进行数据交换 关闭文件的目的之一是保证将输出的数据写入硬盘文件 关闭文件的目的之一是释放内存中的文件对象
2-2 What is wrong in the following code?
vector v; v[0] = 2.5; (2分)
The program has a compile error because there are no elements in the vector. The program has a compile error because you cannot assign a double value to v[0]. √The program has a runtime error because there are no elements in the vector. The program has a runtime error because you cannot assign a double value to v[0].
1-1 将构造函数说明为纯虚函数是没有意义的。 T