31 [单选题] 有如下枚举类型定义:
enum DAY{SUN,MON=10,TUE,WED,THU,FRI=20,SAT};
执行下列程序段
输出字符'a'的个数是( )。
A.13
B.16
C.19
D.22
参考答案:A
参考解析:
枚举类型中,如果当前枚举成员的值显示初始化,那么后一个枚举成员的值比当前枚举成员的值大1,所以枚举类型DAY中,SUN的值为0,NON的值显示为10,TUE的值为11,WED的值为12,THU的值为13,FR1的值显示初始化为20,SAT的值为21,所以for循环会执行13次,输出13个字符'a'。本题答案为A选项。
32 [单选题] 要建立文件流并打开当前目录下的文件file.dat用于输入,下列语句中错误的是( )。
A.ifstream fin=ifstream.open(”file.dat”);
B.ifstream*fin=new ifstream(”file.dat”);
C.ifstream fin;fin.open(”file.dat”);
D.ifstream*fin=new ifstream( );fin->open(”file.dat”);
参考答案:A
参考解析:
本题考查对文件流输入的操作,可以调用文件流的成员函数pen,一般形式如下:文件流对象.open(磁盘文件名,输入/输出方式)。根据以上格式,可以判断A选项错误。
33 [单选题] 下列有关继承和派生的叙述中,正确的是( )。
A.派生类不能访问基类的保护成员
B.作为虚基类的类不能被实例化
C.派生类应当向基类的构造函数传递参数
D.虚函数必须在派生类中重新实现
参考答案:C
参考解析:
派生类可以访问基类的保护成员,而不能访问基类的私有成员。作为虚基类的类可以被实例化。虚函数如果没有派生类中重新实现,那么仍然使用基类的成员函数。
34 [单选题] 已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是( )。
A.Value operator+(Value v,int i);
B.Value operator+(Value v=value,int i);
C.Value operator+(Value v,int i=0);
D.Value operator+(Value v=value,int i=0);
参考答案:A
参考解析:
本题考查运算符重载,其中重载运算符的函数不能有默认的参数,所以本题答案为A。
35 [单选题] 下列关于虚函数的说明中,正确的是( )。
A.从虚基类继承的函数都是虚函数
B.虚函数不得是静态成员函数
C.只能通过指针或引用调用虚函数
D.抽象类中的成员函数都是虚函数
参考答案:B
参考解析:
在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数。虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public。如果一个类包含了纯虚函数,称此类为抽象类。所以本题答案为B。
36 [单选题] 有如下程序:
执行这个程序的输出结果是( )。
A.1111
B.1211
C.1112
D.1212
参考答案:C
参考解析:
本题主要考察虚函数。虚函数指在某基类中声明为viltual并在一个或多个派生类中被重新定义的成员函数,本题中定义类GA的对象a,执行show(a)、display(a),输出11,定义了类GB的对象b,执行show(b),仍然输出1,display(b)执行会调用派生类的f函数,因为f函数为虚函数,输出2,所以本题答案为C。
37 [单选题] 一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是( )。
A.1:1联系
B.1:m联系
C.m:1联系
D.m:n联系
参考答案:D
参考解析:
因为一个教师可讲授多门课程,而一门课程又能由多个老师讲授,所以他们之间是多对多的关系,可以表示为m:n。
38 [单选题] 下列关于类模板的模板参数的叙述中,错误的是( )。
A.模板参数可以作为数据成员的类型
B.模板参数可以作为成员函数的返回类型
C.模板参数可以作为成员函数的参数类型
D.模板参数不能作为成员函数的局部变量的类型
参考答案:D
参考解析:
本题考查类模板的概念和定义,模板参数可以作为成员函数的局部变量的类型。
39 [单选题] 下面对于友元函数描述正确的是( )。
A.友元函数的实现必须在类的内部定义
B.友元函数是类的成员函数
C.友元函数破坏了类的封装性和隐藏性
D.友元函数不能访问类的私有成员
参考答案:C
参考解析:
友元函数的定义既可以在类内部进行,也可以在类外部进行。它提高了程序的运行效率,但破坏了类的封装性和隐藏性,使得类的非成员函数可以访问类的私有成员。
40 [单选题] 有如下程序:
已知其执行后的输出结果为:
Base::fun
Derived::fun
则程序中下画线处应填入的语句是( )。
A.Base.fun( );
B.Base::fun( );
C.Base->fun( );
D.fun( );
参考答案:B
参考解析:
本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。本题中想要输出Base::fun,则必须调用基类的公用成员函数fun,所以使用Base::fun();来调用基类的成员函数fun。
出国留学网计算机等级考试栏目推荐: