咨询请添加 QQ:3064302332 微信:wxxygzs
南开24秋学期(高起本:1803-2103、专升本/高起专:2009-2103)《面向对象程序设计》在线作业[标准答案]
试卷总分:100 得分:100
一、单选题 (共 35 道试题,共 70 分)
1.动态联编所支持的多态性是( * )。
A.虚函数
B.继承
C.编译时的多态性
D.运行时的多态性
2.已知AA是一个类,则执行语句AA a;后( * )。
A.自动调用无参构造函数
B.自动调用有参构造函数
C.自动调用拷贝构造函数
D.产生一个对象a,但不调用任何函数
3.( * )只能访问静态成员变量,不能访问非静态成员变量。
A.静态函数
B.虚函数
C.构造函数
D.析构函数
4.派生类的对象对它的基类成员中()是可以访问的。
A.公有继承的公有成员
B.公有继承的私有成员
C.公有继承的保护成员
D.私有继承的公有成员
5.下面( * )的叙述不符合赋值兼容规则。
A.派生类的对象可以赋值给基类的对象
B.基类的对象可以赋值给派生类的对象
C.派生类的对象可以初始化基类的对象
D.派生类的对象的地址可以赋值给指向基类的指针
6.在C++中,通过()的机制可以对原有的类进行扩充和完善以适应新的需要。
A.继承
B.封装
C.多态
D.重载
7.下面关于私有继承方式的论述中错误的是()。
A.基类中的私有成员对其对象不可见
B.基类中的私有成员对其派生类不可见
C.基类中的公有成员对其派生类可见
D.基类中的保护成员对其派生类不可见
8.一个类的友元函数或友元类能够通过成员操作符访问该类的()。
A.私有成员
B.保护成员
C.公有成员
D.所有成员
9.下列关于构造函数调用顺序的描述中,正确的是()。
A.创建派生类对象时,先调用基类的构造函数,后调用派生类的构造函数
B.创建基类对象时,先调用基类的构造函数,后调用派生类的构造函数
C.创建派生类对象时,先调用派生类的构造函数,后调用基类的构造函数
D.创建基类对象时,先调用派生类的构造函数,后调用基类的构造函数
10.有关析构函数的说法不正确的是( * )。
A.析构函数有且仅有一个
B.析构函数和构造函数一样可以有形参
C.析构函数的功能是用来释放一个对象
D.析构函数无任何函数类型
11.下列类中( * )是输入/输出流类iostream的派生类。
A.fstream
B.ofstream
C.ifstream
D.ostream
12.已知“int a=10,b=8;int &r=a; r=b;cout<<a<<","<<b<<","<<r;”,则输出为()。
A.10,8,10
B.10,8,8
C.8,8,10
D.8,8,8
13.可以用p.a的形式访问派生类对象p的基类成员a其中a是( * )。
A.私有继承的公有成员
B.公有继承的私有成员
C.公有继承的保护成员
D.公有继承的公有成员
14.用于类中虚成员函数说明的关键字( * )。
A.virtual
B.public
C.protected
D.private
15.下列虚基类的声明中正确的是( * )。
A.class virtual B:public A
B.virtual class B:public
C.class B:public A virtual
D.class B: virtual public A
16.下列静态数据成员的特性中,( * )是错误的。
A.说明静态数据成员时前边要加关键字static来修饰
B.静态数据成员在类体外进行初始化
C.引用静态数据成员时,要在静态数据成员名前加和作用域运算符
D.静态数据成员不是所有对象所共有的
17.多态调用是指( * )。
A.以任何方式调用一个虚函数
B.以任何方式调用一个纯虚函数
C.借助于指向对象的基类指针或引用调用一个虚函数
D.借助于指向对象的基类指针或引用调用一个纯虚函数
18.下列运算符中,()运算符在C++中不能重载。
A.?:
B.+
C.-
D.=
19.下面说法中正确的是( * )。
A.一个类只能定义一个构造函数,但可以定义多个析构函数
B.一个类只能定义一个析构函数,但可以定义多个构造函数
C.构造函数与析构函数同名,只要名字前加了一个求反符号(~)
D.构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以
20.下列对派生类的描述中错误的是()。
A.派生类至少有一个基类
B.派生类可作为另一个派生类的基类
C.派生类除了包含它直接定义的成员外,还包含其基类的成员
D.派生类对其继承的基类的成员访问权限保持不变
21.运算符delete删除一个动态对象时( * )。
A.首先为该动态对象调用构造函数,再释放其占用的内存
B.首先释放该动态对象占用的内存,再为其调用构造函数
C.首先为该动态对象调用析构函数,再释放其占用的内存
D.首先释放动态对象占用的内存,再为其调用析构函数
22.进行文件操作时需要包含_ ()头文件。
A.iostream
B.fstream
C.stdio
D.stdlib
23.在C++中,关于下列设置参数默认值的描述中,正确的是( * )。
A.不允许设置参数的默认值
B.设置参数默认值只能在定义函数时设置
C.设置参数默认值时,应该是先设置右边的再设置左边的
D.设置参数默认值时,应该全部参数都设置
24.要在类对象上使用运算符,以下不用必须被重载的运算符是()。
A.[ ]
B.=
C.++
D.--
25.若定义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
26.关于函数模板,描述错误的是( * )。
A.函数模板必须由程序员实例化为可执行的函数模板
B.函数模板的实例化由编译器实现
C.一个类定义中,只要有一个函数模板,则这个类是类模板
D.类模板的成员函数都是函数模板
27.关于类模板,描述错误的是( * )。
A.一个普通基类不能派生类模板
B.类模板从普通类派生,也可以从类模板派生
C.根据建立对象时的实际数据类型,编译器把类模板实例化为模板类
D.函数的类模板参数须通过构造函数实例化
28.对基类和派生类的描述中错误的是( * )。
A.派生类是基类的具体化
B.基类继承了派生类的属性
C.派生类是基类定义的延续
D.派生类是基类的特殊化
29.下列引用的定义中,( * )是错误的。
A.int i; int &j=i;
B.int i; int &j; j=i;
C.float i; float &j=i;
D.char d; char &k=d;
30.抽象类的作用主要是()。
A.直接用作基类
B.直接用作指针
C.引用的基类型
D.包括以上各项
31.“#include <iostream>”是()预处理命令。
A.宏定义
B.文件包含
C.条件编译
D.工程配置
32.在C++中,类与类之间的继承关系具有( * )。
A.自反性
B.对称性
C.传递性
D.反对称性
33.this指针是C++实现( * )的一种机制。
A.抽象
B.封装
C.继承
D.重载
34.下列运算符中,()在C++中不能重载。
A.?:
B.+
C.-
D.<=
35.下面说法中正确的是( * )。
A.当声明的内容不同时,声明同一个名字的两个类是允许的
B.不完全声明的类也可以实例化
C.声明同一个名字的两个类时,要求声明的内容也相同
D.声明同一个名字的两个类是错误的
二、判断题 (共 15 道试题,共 30 分)
36.C++语言中,既允许单继承,又允许多继承。
37.以app方式打开文件时,当前的读指针和写指针都定位于文件尾。
38.面向对象的英文缩写是OOP。
39.默认形参值应在函数定义处指定。
40.在删除一个动态对象时,将自动调用该动态对象所属类的析构函数。
41.虚函数是用virtual关键字说明的成员函数。
42.在用class定义一个类时,数据成员和成员函数的默认访问权限是public。
43.类成员的三种访问控制属性是public、private和friend。
44.一个类的静态数据成员被该类的所有对象共享。
45.类的常量数据成员只能在常量成员函数中使用。
46.析构函数是一种函数体为空的成员函数。
47.以友元方式重载运算符时,形参列表中至少有一个参数必须是自定义数据类型。
48.当类的继承方式为公有继承时,基类的私有成员在派生类中不可访问。
49.类的成员函数中可以直接访问对象成员中的私有成员。
50.定义纯虚函数所用的关键字是purevirtual。