国家二级(C++)机试模拟试卷265
选择题
1.下列关于虚函数的说明中,正确的是( )。(B)
A. 从虚基类继承的函数都是虚函数
B. 虚函数不得是静态成员函数
C. 只能通过指针或引用调用虚函数
D. 抽象类中的成员函数都是虚函数
解析:在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数。虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public。如果一个类包含了纯虚函数,称此类为抽象类。所以本题答案为B。
2.有如下程序:
#include
using name$paee std;
class Base
{
private:
void fun1()const{cout<<\\(B)
A. ①②③④
B. ①②③
C. ②③④
D. ①④
解析:本题考查保护继承中派生类对基类的访问属性,受保护继承中,基类的公用成员和保护成员在派生类中成r保护成员,其私有成员仍为基类私有,保护基类的所有成员在派生类中都被保护起来,在类外不能访问,所以①②③错误。
3.有如下类声明:
class TestClass
{
intn;
public:
TestClass(int i=0):n(i){}
void setValue(int n0);
};
下面关于setValue成员函数的实现中,正确的是( )。
B
解析:C++中类成员函数的实现形式为:
返回类型类名::成员函数名(参数列表){代码块}
4.由于常对象不能被更新,因此( )。(A)
A. 通过常对象只能调用它的常成员函数
B. 通过常对象只能调用静态成员函数
C. 常对象的成员都是常成员
D. 通过常对象可以调用任何不改变对象值的成员函数
解析:本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非const函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选A。
5.有如下程序:
#include
using namespace std;
class Base {
public:
void fun() { cout<<\\(B)
A. Base.fun();
B. Base::fun();
C. Base->fun();
D. fun();
解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。本题中想要输出Base::fun,则必须调用基类的公用成员函数fun,所以使用Base::fun();来调用基类的成员函数fun。
6.有如下程序:
#include
using namespace std;
class Pair{
int m,n;
public:
Pair(int J,int k):m(j),n(k){}
int get(){retum m;}
int get()eonst{return m+n;}
};
int main()t
Pair a(3,5);
eonst Pair b(3,5);
eout<<a.get()<<b.get();
return 0;
}
执行这个程序的输出结果是( )。(B)
A. 33
B. 38
C. 83
D. 88
解析:本题考查常对象、常成员函数及构造函数。常对象只能调用常成员函数,所以本题中,对象a为普通对象,执行a.get()后,会执行默认构造函数,输出3;对象b为常对象,执行b.get()后,会执行常构造函数,输出8。
7.有如下程序:
#include
using namespace std;
classA
{
public:
A(){cout<<“A”;}
};
class B{public:B(){cout<<“B”;));
class C:public A
{
B b:
public:
C(){cout<<“C”;}
);
int main(){C obj;return 0;}
执行后的输出结果是( )。(A )
A. ABC
B. BAC
C. ACB
D. CBA
解析:C++程序中的执行子类,首先执行基类 的构造函数,然后执行数据成员类的构造函数,最后执行子类本身的构造函数,所以输出结果为ABC。
8.数据结构中,与所使用的计算机无关的是数据的( )。(C)
A. 存储结构
B. 物理结构
C. 逻辑结构
D. 线性结构
解析:数据的逻辑结构反映的是数据元素之间的逻辑关系,与使用的计算机无关。
9.将E-R图转换为关系模式时,实体和联系都可以表示为( )。(C)
A. 属性
B. 键 c)关系
C. 域
解析:从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性。
10.假定a=3,下列程序的运行结果是( )。
#include
int fun(int n);
void main()
{cout<<\\(C)
A. 4
B. 8
C. 9
D. 20
解析:由程序main主函数入手,调用fun函数获得返回值result输出。题目中假定a=3,即调用语句fun(a)中的输入参数为a,进入fun函数,在for循环中当i小于等于n,即输入参数3时,循环3次执行“p*=i;restllt+=p:”语句。即执行三次p=p*i,result=restult+p.result的结果为9 返回的fun函数结果为9,即“cout<<result<<endl;”输出9。
11.将x+y*z中的“+”用成员函数重载,“*”用友元函数重载应写为( )。(B)
A. operator+(operator*(y,z))
B. x.operator+(operator*(y’z))
C. x.operator+(x*(y,z)
本文档预览:3600字符,共16020字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载