国家二级(C++)机试模拟试卷524
选择题
1.下列关于栈的叙述正确的是( )。(B)
A. 栈按“先进先出”组织数据
B. 栈按“先进后出”组织数据
C. 只能在栈底插入数据
D. 不能删除数据
解析:栈是按“先进后出”的原则组织数据的,数据的插入和删除都在栈顶进行操作。
2.有如下类声明:
class SAlVIPLE
{
int n;
public:
SAMPLE(int i=0):n(i){}
void setValue(int nO);
};
下列关于getValue成员函数的定义中,正确的是( )。
B
解析:本题考查在类外定义类的成员函数,需要使用作用域限定符“::”,属于基础知识,本题答案为B。
3.下列情况中,不会调用拷贝构造函数的是( )。(B)
A. 用一个对象去初始化同一类的另一个新对象时
B. 将类的一个对象赋值给该类的另一个对象时
C. 函数的形参是类的对象,调用函数进行形参和实参结合时
D. 函数的返回值是类的对象,函数执行返回调用时
解析:拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它的一般格式是:类名::类名(const类名&引用对象名)。当一个类的对象赋值给该类的另一个对象时,是赋值而不是创建对象,所以不会调用拷贝构造函数。
4.以下关键字不能用来声明类的访问权限的是( )。(B)
A. public
B. static
C. protected
D. private
解析:类的成员访问权限有3种:public(公用)、protected(保护)、private(私有)。
5.对于一个类定义,下列叙述中错误的是( )。(B)
A. 如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数
B. 如果没有定义缺省的构造函数,编译器一定将生成一个缺省的构造函数
C. 如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数
D. 如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数
解析:本题考查构造函数和复制构造函数,如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数,如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数。如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。
6.如果派生类以protected方式继承基类,则原基类的protected成员和public成员在派生类中的访问属性分别是( )。(D)
A. public和public
B. public和protected
C. proteeted和public
D. protected和protected
解析:本题考查保护继承中派生类对基类的访问属性,在受保护继承中.基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,所以本题答案为D。
7.如果表达式一X/y中的“一”和“/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为( )。(B)
A. operator/(x.operato一(),y);
B. operator/(operator一(x),y);
C. x.operator一().operator/(y);
D. y.operator/(operator一(x));
解析:运算符重载实际上时函数的重载。重载运算符的一般格式:函数类型operator运算符名称(参数表)。重载运算符之后:函数operatot+重载运算符“+”。“一”重载为“operator一”,“/”重载为“operator/”。另外重载不能改变运算的优先级,一x/y计算一x后,除以y,所以表达式改写为:operator/(operator一(x),y):。
8.在下列字符中,不允许作为C++标识符的是( )。(D)
A. b
B. B
C. _
D. 2
解析:在C++中,标识符只能以字母、数字和下画线组成,并且首字母不能为数字。所以D选项错误。
9.软件测试的目的是( )。(D)
A. 评估软件可靠性
B. 发现并改正程序中的错误
C. 改正程序中的错误
D. 发现程序中的错误
解析:软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误。
10.有如下两个类定义:
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。
11.有如下类的定义。横线处的语句是( )。
class MyClass
{
public:
MyClass(int a=0,int b=0)
{ X=a;
Y=b:
}
void Changeoconst
{X-=10;
Y+=10;
}
private:
intX,Y;
};(C)
A. static
B. const
C. mutable
D. 不需要填入内容
解析:C++中const关键字用来表示一个常量,同时const也用来修饰函数。这两个概念需要明确:const所修饰的函数只能是类的成员函数,因为const所修饰的函数中,要由编译器负责保护类的成员变量不被修改。而相对的,mutable则是用来修饰类的成员变量,让该变量在const所修饰的成员函数中可以被修改。而且const修饰的函数只能是类的成员函数,mutable修饰的变量只能是类的成员变量。
12.下列语句中错误的是( )。(D)
A. const int*p=0;
B. const int y=0;
C. int x=0;
D. const int p=new int(100);
解析:C++中使用new表达式动态创建对象,new表达式返回指向新创建对象的指针,D选
本文档预览:3600字符,共16766字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载