国家二级(C++)机试模拟试卷261
选择题
1.关于运算符重载,下列表述中正确的是( )。(C)
A. C++已有的任何运算符都可以重载
B. 运算符函数的返回类型不能声明为基本数据类型
C. 在类型转换符函数的定义中不需要声明返回类型
D. 可以通过运算符重载来创建C++中原来没有的运算符
解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。
2.有如下程序:
#inehde
using nanmapace std;
class arclass{
public:
arclass(){tout<<’A’;}
MyClass(char c){tout<<c;}
~myclass(){cout<<’B’;}
};
int main(){
MyClass p1,*p2;
p2=new MyClass(’X’);
delete p2;
return 0;
}
执行这个程序的输出结果是( )。(D)
A. ABX
B. ABXB
C. AXB
D. AXBB
解析:构造函数和析构函数的调用顺序为先构造的后析构,后构造的先析构。所以本题答案为D。
3.下面的描述中,正确的是( )。(A )
A. virtual可以用来声明虚函数
B. 含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类
C. 即使基类的构造函数没有参数,派生类也必须建立构造函数
D. 静态数据成员可以通过成员初始化列表来初始化
解析:在基类中用virtual声明成员函数为虚函数,所以A是正确的。纯虚函数是在声明虚函数时被“初始化”为0的虚函数。纯虚函数是一种特殊的虚函数,它没有具体的实现。静态数据成员函数只能在类外进行初始化。
4.程序流程图中的菱形框表示的是( )。(C)
A. 事实描述
B. 行动方案
C. 逻辑判断
D. 流动方向
解析:绘制流程图时,椭圆形表示事实描述、矩形表示行动方案、菱形框表示逻辑判断、箭头代表流动方向。
5.字面常量42、4.2、42L的数据类型分别是( )。(C)
A. long、double、int
B. long、float、int
C. int、double、long
D. int、float、long
解析:本题考查整型变量的类型和浮点变量的类型,42默认为int型数据,42后面加上L后,表示long型数据,4.2默认为double型数据。
6.有如下程序:
#include<iostream>
using namespace std;
class Sample {
friend long fun(Sample s);
public:
Sample(long a){x=a;}
private:
long x;
};
long fun(Sample s){
if(s.x<2) return 1;
return s.x * fun(Sample(s.x-1));
}
int main()
{
int sum=0;
for(int i=0;i<6;i++)
{sum+=fun(Sample(i));}
cout<<sum:
return 0;
}
执行这个程序的输出结果是( )。(C)
A. 120
B. 16
C. 154
D. 34
解析:本题考查默认构造函数,当i=0、1时,fun(Sample(i))为1;当i=2时,fun(Sample(i))为2;当i=3时,fun(Sample(i))为6;当i=4时,fun(Sample(i))为24;当i=5时,fun(Sample(i))为120。所以总和为154。
7.C++中的模板包括( )。(C)
A. 对象模板和函数模板
B. 对象模板和类模板
C. 函数模板和类模板
D. 变量模板和对象模板
解析:本题考查函数模板和类模板,所以答案为C。
8.有如下两个类定义:
class XX{
private:
double x1;
protected:
double x2;
public:
double x3;
};
class YY:protected XX{
private:
double y1;
protected:
double y2;
public:
double y3;
};
在类YY中保护成员变鼍的个数是( )。(C)
A. 1
B. 2
C. 3
D. 4
解析:本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,所以基类的成员x2、x3变成了保护成员,派生类中的y2也是保护成员,所以共有3个保护成员。本题答案为C。
9.下列关于this指针的叙述中,错误的是( )。(D)
A. this指针只能在类的非静态成员函数中使用
B. this指针存储着对象的地址
C. this指针不需要显式定义
D. 在构造函数中不能使用this指针
解析:C++中,静态成员函数不属于任何类对象,它独立于类的任意对象而存在,由所有类对象所共享,它没有this指针,只有类的非静态成员函数才有this指针,选项A正确;this指针存储着调用对象的地址,选项B正确;成员函数不能定义this指针,它是由编译器隐含定义的,选项C正确;在构造函数中对象还没有完成生成,但这并不意味着对象什么都没有,所以构造函数中也有this指针,通常尽量避免在构造函数中使用this指针,选项D错误;本题答案为D。
10.有如下程序:
#include
#include
using namespace std;
class Animal{
public:
virtual string GetType() const { ret
本文档预览:3600字符,共15192字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载