东师C++程序设计20秋在线作业2[答案]满分答案
C++程序设计20秋在线作业2题目
试卷总分:100 得分:100
一、单选题 (共 20 道试题,共 60 分)
1.要使用动态联编,必须使用()调用虚函数。
A.类名
B.对象名
C.派生类指针
D.基类指针
2.假定classA为一个类,a为该类公有的数据成员,px为指向该类对象的指针,则访问px所指对象中数据成员a的格式为()。
A.px(a)
B.px[a]
C.px->a
D.px.a
3.如有以下函数模板: T min(T a,T b) { return a<b?a:b; } 则函数调用 min<int>(100,’b’); 返回的结果是()。
A.100
B.98
C.b
D.d
4.下列关于虚基类的描述,错误的是()。
A.设置虚基类的目的是为了消除二义性
B.虚基类的构造函数在非虚基类之后调用
C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用
D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
5.#include <iostream.h> class BASE{ char c; public: BASE(char n):c(n){} virtual~BASE(){cout<<C;} }; class DERIVED:public BASE{ char c; public: DERIVED(char n):BASE(n+1),c(n){} ~DERIVED(){cout
A.XY
B.YX
C.X
D.Y
6.建立包含有对象成员的派生类对象时,自动调用构造函数的执行顺序依次为()的构造函数。
A.基类、自己所属类、对象成员所属类
B.对象成员所属类、基类、自己所属类
C.自己所属类、对象成员所属类、基类
D.基类、对象成员所属类、自己所属类
7.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为()。
A.public
B.protected
C.private
D.static
8.假定classA为一个类,则执行“classA x(5);”语句时将自动调用该类的()。
A.无参构造函数
B.带参构造函数
C.复制构造函数
D.赋值重载函数
9.下面描述中,表达错误的是()。
A.公有继承时基类中的public成员在派生类中仍是public的
B.公有继承时基类中的private成员在派生类中仍是private的
C.公有继承时基类中的protected成员在派生类中仍是protected的
D.保护继承时基类中的public成员在派生类中是private的
10.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是()。
A.类
B.对象
C.函数体
D.数据块
11.cout是I/O流库中预定义的()。
A.类
B.对象
C.文件
D.常量
12.假设己经定义好了一个类student,现在要定义类derived,它是从student私有派生的,定义类derived的正确写法是()。
A.class derived:: student private{ //…… };
B.class derived : student public { //…… };
C.class derived :private student { //…… };
D.class derived::public student { //…… };
13.在下面有关静态成员函数的描述中,正确的是()。
A.在静态成员函数中可以使用this指针
B.在建立对象前,就可以为静态数据成员赋值
C.静态成员函数在类外定义时,要用static前缀
D.静态成员函数只能在类外定义
14.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是()。
A.友元函数
B.虚函数
C.构造函数
D.析构函数
15.如有以下模板类定义: Template <class T> class sum { T a, b; Public: Sum (T x, T y); } 则在类体外定义构造函数正确的是()。
A.template <class T> sum::sum(T x,T y) { a=x; b=y; }
B.template <typename T> sum(T x,T y) { a=x; b=y; }
C.template <class T> sum<T>::sum(T x,T y) { a=x; b=y; }
D.sum<T>::sum(T x,T y) { a=x; b=y; }
16.已知:类A中一个成员函数说明如下:void Set(A&a);其中,A&的含义是()。
A.指向类A的指针为a
B.将a的地址值赋给变量Set
C.a是类A对象的引用,用来作函数Set()的参数
D.变量A与a按位与作为函数Set( )的参数
17.下面对于指针的描述不正确的是()。
A.指针是地址变量
B.指针不能用除0以外的常量赋值
C.两个指针变量的加减法无意义
D.指针指向不同基类型的变量长度不同
18.在函数声明中,()是不必要的。
A.函数名
B.函数类型
C.参数的名称
D.参数类型
19.下列说法正确的是()。
A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C.类的内联函数必须在类体内定义
D.类的内联函数必须在类体外通过加关键字inline定义
20.假设已经有定义char*const name="chen"; 下面的语句中正确的是()。
A.name[3]= 'q';
B.name="lin";
C.name=new char[5];
D.name=new char ('q') ;
东师C++程序设计20秋在线作业2[答案]多选题答案
二、判断题 (共 20 道试题,共 40 分)
21.若一个类A,它的两个直接基类是从同一个间接基类派生而来的,则类A对基类成员的访问会产生二义性。
22.只要一个类定义了一个构造函数(不一定是无参构造函数),系统将不再给它提供缺省的构造函数。
23.在删除一个动态对象时,将自动调用该动态对象所属类的析构函数。
24.类A继承类B,则A称为B的基类,B称为A的派生类。
25.拷贝构造函数使用本类对象的指针作为参数初始化新创建的对象。
26.如果一个类只定义了一个带参的构造函数,则系统会给它提供缺省的无参构造函数。
27.如果派生类没有实现虚函数,那么它将使用它的基类的虚函数。
28.在类定义体内,只有具有public访问属性的成员间可以相互访问。
29.静态成员函数与在一般的成员函数一样,都隐含有一个this指针。
30.对于类中的对象成员既可以在构造函数的初始化列表中初始化也可以在构造函数体中初始化。
31.类对象的输入输出需在类中定义重载的提取运算符“>>”和插入运算符“<<”。
32.类和对象之间的关系是抽象和具体的关系。
33.cout通常与键盘相连,cin通常与显示器相连。
34.C++流类库是用继承方法建立起来的,它具有两个平行的基类,即istream类和ostream类,所有其他的流类都是从它们直接或间接地派生出来的。
35.在一般的成员函数中都隐含有一个this指针,用来指向对象自身,而在静态成员函数中是没有this指针的。
36.C++与C语言本质差别在于C++语言是面向对象的,而C语言是面向过程的。
37.在C++中,只能重载已有的运算符。
38.在文件操作结束时,可以用eof()成员函数关闭该文件。
39.构造函数是不能说明它的返回值类型的,但可以说明为void类型。
40.protected和private区别在于:protected成员可以被派生类访问,而private成员则不能被派生类访问。
东师C++程序设计20秋在线作业2[答案]历年参考题目如下: