QQ:2621578584
南开22秋学期(高起本1709-1803、全层次1809-2103)《面向对象程序设计》在线作业-00003(标准答案)

时间:2023/4/8点击: 242 次

可做奥鹏院校所有作业、毕业论文咨询请添加 QQ:2621578584
微信:apgzs888
22秋学期(高起本1709-1803、全层次1809-2103)《面向对象程序设计》在线作业-00003(标准答案)
试卷总分:100  得分:100
一、单选题 (共 35 道试题,共 70 分)
1.不论派生类以何种方法继承基类,都不能使用基类的( )。
A.public成员
B.private成员
C.protected成员
D.private成员和protected成员
答案:D

2.若类A和类B的定义如下: class A { int i,j; public: void get(); }; class B:A//默认为私有派生 { int k; public; void make(); }; void B:: make() { k=i*j; } 则上述定义中,()是非法的表达式。
A.void get();
B.int k;
C.void make();
D.k=i*j;
答案:D

3.下列关于对象数组的描述中,错误的是( )。
A.对象数组的下标是从0开始的
B.对象数组的数组名是一个常量指针
C.对象数组的每个元素是同一个类的对象
D.对象数组只能赋初值,而不能在定义后赋值
答案:D

4.若一个类中含有纯虚函数,则该类称为( )。
A.基类
B.纯基类
C.派生类
D.抽象类
答案:D

5.下列运算符中,()运算符在C++中不能重载。
A.?:
B.+
C.-
D.=
答案:A

6.以下为重载函数的一组函数声明的是()。
A.void print(int); void print(double);
B.void fun(int); int fun(int);
C.int max(int,int); int min(int,int);
D.void mm(); int mm();
答案:A

7.下列( )是构造函数的特征。
A.构造函数在创建对象时自动调用
B.构造函数不可以重载
C.构造函数不可以设置默认参数
D.构造函数必须指定函数类型
答案:A

8.类对象占用内存的大小与()有关。
A.数据成员
B.成员函数
C.数据成员和成员函数
D.私有成员
答案:A

9.已知X类.则当程序执行到语句X *array[3];时,调用了( )次构造函数。
A.0
B.1
C.2
D.3
答案:A

10.运算符delete删除一个动态对象时( )。
A.首先为该动态对象调用构造函数,再释放其占用的内存
B.首先释放该动态对象占用的内存,再为其调用构造函数
C.首先为该动态对象调用析构函数,再释放其占用的内存
D.首先释放动态对象占用的内存,再为其调用析构函数
答案:C

11.撤消对象时,系统自动调用( )函数。
A.成员函数
B.构造函数
C.析构函数
D.普通函数
答案:C

12.关于函数的描述中,()是正确的。
A.派生类的虚函数与基类的虚函数具有不同的参数个数和类型
B.基类中说明了虚函数后,派生类中其对应的函数一定要说明为虚函数
C.虚函数是一个成员函数
D.虚函数是一个static类型的成员函数
答案:C

13.面向对象程序设计思想的主要特征中不包括( )。
A.封装性
B.多态性
C.继承性
D.功能分解,逐步求精
答案:D

14.在一个C++源文件中使用了cin和cout,那么在这个源文件中必须包含()文件。
A.iostream
B.fstream
C.stdio.h
D.stdlib.h
答案:A

15.下列关于赋值运算符重载的说法中正确的是()。
A.返回值一般是以引用方式返回的对象,而函数体中总是用语句“return *this;”返回this指针所指向的对象
B.赋值运算符只能以非成员函数的方式重载
C.赋值运算符既可以以成员函数的方式重载,又可以以非成员函数的方式重载
D.以上均不正确
答案:A

16.关于对象成员的构造函数的调用顺序,说法正确的是( )。
A.与它们在成员初始化列表中给出的顺序相同
B.与析构函数的调用顺序相同
C.与它们在类中说明顺序相同
D.以上说法都不对
答案:C

17.this指针是C++实现( )的一种机制。
A.抽象
B.封装
C.继承
D.重载
答案:B

18.下面叙述不正确的是( )。
A.基类的保护成员在派生类中仍然是保护的
B.基类的保护成员在公有派生类中仍然是保护的
C.基类的保护成员在私有派生类中是私有的
D.对基类成员的访问必须是无二义性
答案:A

19.下面关于对象概念的描述中,( )是错误的。
A.对象就是C语言中的结构变量
B.对象代表着正在创建的系统中的一个实体
C.对象是一个状态和操作(或方法)的封装体
D.对象之间的信息传递是通过消息进行的
答案:A

20.静态数据成员初始化在()进行,而且前面不加static,以免与一般静态变量或对象相混淆。
A.类体内
B.类体外
C.构造函数内
D.内联函数内
答案:B

21.若类中有指针成员变量,则应编写(),使得在对象销毁时能够自动调用该函数释放指针成员变量所指向的内存空间。
A.友元函数
B.虚函数
C.构造函数
D.析构函数
答案:D

22.将一个函数声明为某类的友元函数后,则在函数中不可以直接访问该类的()。
A.公有成员
B.私有成员
C.保护成员
D.都可访问
答案:D

23.关于动态关联的下列叙述中,()是错误的。
A.动态关联是以虚函数为基础的
B.动态关联调用虚函数操作是指向对象的指针或引用
C.动态关联是在运行时确定所调用的函数代码的
D.动态关联是在编译时确定操作函数的
答案:D

24.在C++标准模板库中,vector容器是一种( )。
A.标准类
B.标准对象
C.标准函数
D.标准类模板
答案:D

25.用于类中虚成员函数说明的关键字( )。
A.virtual
B.public
C.protected
D.private
答案:A

26.关于类模板,描述错误的是( )。
A.一个普通基类不能派生类模板
B.类模板从普通类派生,也可以从类模板派生
C.根据建立对象时的实际数据类型,编译器把类模板实例化为模板类
D.函数的类模板参数须通过构造函数实例化
答案:D

27.对于任意一个类,构造函数的个数最少为( )。
A.0
B.1
C.2
D.3
答案:B

28.下列描述中,()是抽象类的特性。
A.可以说明虚函数
B.可以定义友元函数
C.可以进行构造函数重载
D.不能说明其对象
答案:D

29.若定义cin>>str;当输入 Microsoft Visual Studio 6.0! 所得的结果是str= ()。
A.Microsoft Visual Studio 6.0!
B.Microsoft
C.Microsoft Visual
D.Microsoft Visual Studio 6.0
答案:B

30.空类的声明( )是正确的。
A.class类名;
B.class类名{};
C.class类名{}
D.class类名
答案:B

31.下列关于类的继承描述中,( )是错误的。
A.派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
B.派生类也是基类,但基类不一定具有派生类的全部属性和方法
C.继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
D.一个基类可以有多个派生类,一个派生类可以有多个基类
答案:A

32.声明一个类的对象时,系统自动调用( )函数。
A.成员函数
B.构造函数
C.析构函数
D.普通函数
答案:B

33.类MyClass的定义如下: class MyClass { public: MyClass() { value = 0;} SetVariable(int i) { value = i; } private: int value; } 则对下列语句序列正确的描述是()。 MyClass *p,my; p=&my;
A.语句p=&my;是把对象my赋值给指针变量p
B.语句MyClass *p,my;会调用两次类MyClass的构造函数
C.对语句 *p.SetVariable(5)的调用是正确的
D.语句p->SetVariable(5)与语句my.SetVariable(5)等价
答案:D

34.在保护继承中,基类中的私有成员作为派生类的()。
A.公有成员
B.私有成员
C.保护成员
D.不可访问
答案:D

35.下列关于构造函数调用顺序的描述中,正确的是()。
A.创建派生类对象时,先调用基类的构造函数,后调用派生类的构造函数
B.创建基类对象时,先调用基类的构造函数,后调用派生类的构造函数
C.创建派生类对象时,先调用派生类的构造函数,后调用基类的构造函数
D.创建基类对象时,先调用派生类的构造函数,后调用基类的构造函数
答案:A

二、判断题 (共 15 道试题,共 30 分)
36.虚函数是用virtual关键字说明的成员函数。
答案:正确

37.含有纯虚函数的类是抽象类。
答案:正确

38.定义一个虚基类后,则该虚基类后继类层次中的类都需要调用虚基类的构造函数对虚基类中定义的成员变量进行初始化。
答案:正确

39.函数模板可以与普通函数重载。
答案:正确

40.类中的静态数据成员为该类的所有对象所共享,并且,在该类对象被销毁时,静态数据成员不会被同时销毁。
答案:正确

41.一个类的静态数据成员被该类的所有对象共享。
答案:正确

42.运算符重载实际上是对已有的运算符重新定义其功能。
答案:正确

43.类A有如下成员函数: int A::fun(double x){return (int) x/2;} int A::fun(int x){return x*2;} 设a为类A的对象,在主函数中执行语句int s=a.fun(6)+a.fun(2.0)后的s值为13。
答案:正确

44.多数运算符可以重载,个别运算符不能,运算符重载是通过函数定义实现的。
答案:正确

45.抽象类不能定义对象,但可以声明抽象类的指针或引用。
答案:正确

46.在公有继承中,基类中只有公有成员对派生类对象是可见的。
答案:正确

47.运算符重载的形式有两种:成员函数形式和友元形式。
答案:正确

48.cin是输出流的一个对象,处理标准输出。
答案:错误

49.运算符[]只能用成员运算符来重载,不能用友元运算符来重载。
答案:正确

50.可以在类的构造函数中对静态数据成员进行初始化。
答案:错误

在线作业 离线作业 论文咨询 在线考试 旺旺客服 微信二维码