可做各院校 作业、形考、论文 咨询请添加 QQ:3064302332
微信:wxxygzs
西交23秋《面向对象程序设计》在线作业[参考答案]
试卷总分:100 得分:100
一、单选题 (共 30 道试题,共 60 分)
1.关于静态成员,正确的说法是_______。
A.静态成员函数可以直接访问该类中的非静态成员
B.非静态成员函数不能直接访问该类中的静态成员
C.静态数据成员同其它数据成员一样通过构造函数进行初始化
D.静态成员在任何对象创建之前就已经创建
2.对于下面的两条语句,正确的描述是______。
MyObject a(2), b(a), c; c = b = a;
A.拷贝构造函数执行了1次;
B.赋值运算符重载函数执行了3次;
C.拷贝构造函数函数执行了3次;
D.赋值运算符重载函数执行了1次;
3.假定AB为一个类,则执行 “AB x(a,5);”语句时将自动调用该类的 ( )。
A.带参构造函数
B.无参构造函数
C.复制构造函数
D.赋值重载函数
4.对于动态分配内存空间描述正确的是( )。
A.使用new运算符分配的内存空间的长度必须是常量
B.delete运算符可以释放动态的存储空间和静态的存储空间
C.用new分配的内存空间是不连续的
D.delete运算符只能以释放由new分配的动态存储空间
5.下列不是C++基本数据类型的是( )。
A.int
B.string
C.char
D.void
6.当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储()个整数。
A.n
B.n+1
C.n-1
D.1
7.若一个类中含有纯虚函数,则该类称为( )。
A.基类
B.虚基类
C.抽象类
D.派生类
8.关于纯虚函数,下列说法不正确的是( )。
A.纯虚函数是在声明虚函数时被初始化为0的函数
B.纯虚函数没有函数体
C.纯虚函数可以被调用
D.如果在一个类中声明了纯虚函数,该虚函数中在派生类中仍有可能为虚函数
9.下列对引用的陈述中错误的是()。
A.每一个引用都是其所引用对象的别名,因此必须初始化;
B.形式上针对引用的操作实际上作用于它所引用的对象;
C.一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行;
D.不需要单独为引用分配存储空间 。
10.派生类可以访问其基类的( )。
A.公用成员
B.保护成员
C.私有派生
D.公用和保护成员
11.假设已经定义好了一个类student,现在要定义类derived,它是从student私有派生的,定义类derived的正确写法是( )。
A.“class derived::student prived {// …} ;”
B.“class derived:student public {// …} ;”
C.“class derived:private student{// …} ;”
D.“class derived::student public stuednt {// …} ;”
12.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化( )。
A.与虚基类下面的派生类个数有关
B.多次
C.二次
D.一次
13.下列哪个初始化是非法的(下面五个选项是顺序出现的声明语句)( )
A.int i =-1;
B.const int ic=i;
C.const int *pc=⁣
D.int *const cpi=⁣
E.const int *const cpic=⁣
14.关于面向对象系统分析,下列说法中不正确的是( )。
A.术语“面向对象分析”可以用缩写OOA表示
B.面向对象分析阶段对问题域的描述比设计阶段更详细
C.面向对象分析包括问题域分析和应用分析两个步骤
D.面向对象分析需要识别对象的内部和外部特征
15.在下面的4个关键字中,( )是用来说明虚函数的。
A.virtual
B.public
C.protected
D.private
16.对于类模板,其类型形参可以作为( )。
A.成员函数的形参类型
B.成员函数的返回类型
C.数据成员的类型
D.其他三种均可
17.C++的继承性允许派生类继承基类的( )。
A.部分特性,并允许增加新的特性或重定义基类的特性
B.部分特性,但不允许增加新的特性或重定义基类的特性
C.所有特性,并允许增加新的特性或重定义基类的特性
D.所有特性,但不允许增加新的特性或重定义基类的特性
21.下面的类中,( )不是由抽象基类ios直接派生出来的。
A.istream
B.ostream
C.iostream
D.fstreambase
19.为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择( )。
A.内置函数
B.重载函数
C.递归函数
D.函数模板
20.下列程序段不会发生二义性的是_____。
A.int fun(double p){...;}
float fun(float p){...;}
int x;
x=fun(0);
B.int fun(float p){...;}
float fun(unsigned p){...;}
int x;
x=fun(0);
C.int fun(int i,int j=2){...;}
float fun(int i){...;}
cout<<fun(5);
D.int fun(int i=2,int j=2){...;}
int fun(int *p){...;}
cout<<fun(5);
21.C++编译系统确定调用是具体对象的过程称为关联。C++有( )关联。
A.1种
B.2种
C.3种
D.4种
22.能够释放对象所占资源的是( )。
A.析构函数
B.数据成员
C.构造函数
D.静态成员函数
23.下列关于运算符重载的描述中,错误的是( )。
A.运算符重载不可以改变操作数的个数
B.运算符重载不可以改变运算符的功能
C.运算符重载不可以改变结合方向
D.运算符重载不可以改变运算优先级
24.运行时的多态性使用什么获得?( )
A.重载函数
B.继承
C.虚函数
D.B和C
25.已知p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给A1的m赋值为5,( )是正确的。
A.A1.p = 5;
B.A1->p = 5;
C.A1.*p = 5;
D.*A1.p = 5;
26.假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为( )。
A.0
B.1
C.n
D.n-1
27.关于构造函数,下列说法不正确的是( )。
A.构造函数名字和类名相同
B.构造函数在创建对象时自动执行
C.构造函数无任何函数返回类型
D.构造函数有且只有一个
28.下述静态数据成员的特性中,( )是错误的。
A.声明静态数据成员时前面要加修饰符static。
B.静态数据成员要在类体外进行初始化。
C.在程序中引用静态数据成员时,要在静态数据成员名前加和作用域运算符。
D.静态数据成员是一个类的个别对象所共享的。
29.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是( )。
A.作为友元函数重载的1元运算符
B.作为成员函数重载的1元运算符
C.作为友元函数重载的2元运算符
D.作为成员函数重载的2元运算符
30.若有如下函数模板定义,则正确使用该函数模板的语句是( )。 template void add(type a, type b, type &c) { c=a+b?; }
A.float x,y,z;add(x,y,z)?;
B.int x,y,z;add(x,y,&z)?;
C.float x,y?;int z;add(x,y,z)?;
D.float x,y?;int z;add(x,y,&z)?;
西交23秋《面向对象程序设计》在线作业[答案]多选题答案
二、判断题 (共 20 道试题,共 40 分)
31.内置函数的定义必须出现在第一次调用内置函数之前。( )
32.使用字符串流时必须打开文件。( )
33.Iostream是抽象基类ios的直接派生类.。()
34.在设计类时一般把数据成员设置为私有的,把函数成员设置为公用的,从而实现了公用接口和私有实现的分离。( )
35.若类Y是类X的私有派生类,类Z是类Y的公用派生类,则类Z不能访问类X 的公用成员和保护成员。( )
36.不可以定义抽象类的对象。( )
37.引用和指针都可作函数参数。( )
38.重载函数不能改变运算符运算对象的个数。( )
39.C++只能用于面向对象程序设计,不适用于面向过程程序设计。( )
40.当一个成员函数被声明为虚函数后,其派生类中的具有相同参数类型和相同参数个数类型的相同类型的同名函数也是虚函数。( )
41.私有继承的派生类不能访问基类中的私有成员,但公用继承的派生类可以访问基类中的私有成员。( )
42.成员函数中调用的虚函数可能实现动态联编。( )
43.关系运算符可以用来比较两个字符的大小,也可用来比较两个字符串的大小。( )
44.在类的继承层次结构中,在不同的层次中不能出现名字相同、参数个数和类型都相同而功能不同的函数。( )
45.不能通过派生类对象引用从私有基类继承过来的任何成员。( )
46.友元函数说明在类体内,它是一种成员函数。( )
47.抽象类中只能有一个纯虚函数。( )
48.在用class定义一个类时,如果不加声明,数据成员和成员函数默认的访问权限是public。( )
49.在声明派生类时,派生类把基类的的构造函数也一起继承过来。( )
50.析构函数不能被继承。( )