21年春地大《面向对象程序设计(新)》在线作业二[答案]满分答案
地大《面向对象程序设计(新)》在线作业二-0012
试卷总分:100 得分:100
一、单选题 (共 15 道试题,共 60 分)
1.下面描述中,表达错误的是()
A.公有继承时基类中的public成员在派生类中仍是public的
B.公有继承是基类中的private成员在派生类中仍是private的
C.公有继承时基类中的protected成员在派生类中仍是protected的
正确答案:-----
D.私有继承时基类中的public成员在派生类中是private的
正确答案:-----
2.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是()
A.派生类的对象可以赋给基类的对象
B.派生类的对象可以初始化基类的引用
C.派生类的对象可以直接访问基类中的成员
D.派生类的对象的地址可以赋给指向基类的指针
正确答案:-----
3.有如下类定义: class Point{ private; static int how_many; }; ____ how_many=0; 要初始化Point 类的静态成员how_many,下划线处应填入的内容是()
A.ing
B.static int
C.int Point::
D.static int Point::
正确答案:-----
4.下列有关C++流的叙述中,错误的是()
A.C++操作符setw 设置的输出宽度永久有效
B.C++操作符endl 可以实现输出的回车换行
正确答案:-----
C.处理文件I/O 时,要包含头文件fstream
D.进行输入操作时,eof()函数用于检测是否到达文件尾
正确答案:-----
5.C++异常处理机制中没有()
A.try
B.throw
C.catch
D.finally
正确答案:-----
6.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为()
A.AB operator+(AB & a , AB & b)
B.AB operator+(AB & a)
C.operator+(AB a)
D.AB & operator+( )
正确答案:-----
7.使用流控制符需要头文件()
A.endl
正确答案:-----
B.hex
C.setw
D.left
正确答案:-----
8.有如下类定义: class MyClass{ Int value; public; MyClass(int n): value (n) {} int gerValue()const{ return value;} }; 则类MyClass 的构造函数的个数是()
A.1 个
B.2 个
C.3 个
D.4 个
正确答案:-----
9.执行语句 int i = 10; cout << i++ + i++; 输出结果是()
A.20
B.21
C.22 D
D.不确定
正确答案:-----
正确答案:-----
10.用cin为整型变量输入数据时,如果从键盘输入的不是数字,输入后整型变量中的结果会是()
A.0
B.负数
C.正数
D.不确定
11.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为()
A.main
B.MAIN
C.name
D.Function
正确答案:-----
12.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是()
A.友元函数
B.虚函数
C.构造函数
D.析构函数
正确答案:-----
13.下列有关类继承的叙述中,错误的是()
A.继承可以实现软件复用
B.虚基类可以解决由多继承产生的二义性问题
C.派生类构造函数要负责调用基类的构造函数
D.派生类没有继承基类的私有成员
正确答案:-----
14.对于全局函数 int f(void) ,与其完全等价的函数原型为()
正确答案:-----
A.int& f( );
B.int f(void ) const;
正确答案:-----
C.const int f( );
D.B、C都不是
正确答案:-----
15.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是()
A.增加了一些ABC运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念
正确答案:-----
21年春地大《面向对象程序设计(新)》在线作业二[答案]多选题答案
二、多选题 (共 5 道试题,共 20 分)
16.在类的静态成员函数的实现体中,可以访问或调用()
A.本类中的静态数据成员
B.本类中非静态的常量数据成员
C.本类中其它的静态成员函数
D.本类中非静态的成员函数
正确答案:-----
17.下列有关抽象类和纯虚函数的叙述中,错误的是()
A.拥有纯虚函数的类是抽象类,能用来定义对象
B.抽象类的派生类若不实现纯虚函数,它也是抽象类
C.纯虚函数的声明以“=0;”结束
正确答案:-----
D.纯虚函数都不能有函数体
正确答案:-----
21.赋值运算符重载函数与拷贝构造函数的区别是什么()
A.都是拷贝一个类的对象给另一个同类型的类的对象
B.拷贝构造函数是用已存在的对象的各成员的当前值来创建一个相同的新对象
C.赋值运算符重载函数要把一个已存在对象的各成员的当前值赋给另一个已存在的同类对象
19.以下哪些是面向对象程序设计的特征( )
A.抽象
B.封装
C.继承
D.多态
正确答案:-----
20.模板定义中的类型参数可以用作()
A.局部变量类型
B.函数参数类型
C.函数返回值类型
D.数据成员类型
正确答案:-----
三、判断题 (共 5 道试题,共 20 分)
21.构造函数和析构函数都可以重载
22.构造函数的初始化列表中的内容,不会影响构造对象中成员数据的初始化顺序。
23.默认的继承方式是private
24.将类A所有构造函数的可访问性都限制为私有的,那么在main函数中不可能得到类A的实例对象
25.重载函数在编译时时静态联编,而虚函数在运行时是动态联编
21年春地大《面向对象程序设计(新)》在线作业二[答案]历年参考题目如下:
地大《面向对象程序设计(新)》在线作业二-0009
试卷总分:100 得分:0
一、 单选题 (共 15 道试题,共 60 分)
1.当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为
A.ios::in
B.ios::out
C.ios::int | ios::out
D.没有
2.下列有关函数重载的叙述中,错误的是()
A.函数重载就是用相同的函数名定义多个函数
B.重载函数的参数列表必须不同
C.重载函数的返回值类型必须不同
D.重载函数的参数可以带有默认值
3.设void f1(int * m,long & n);int a;long b;则以下调用合法的是()
A.f1(a,b);
B.f1(&a,b);
C.f1(a,&b);
D.f1(&a,&b);
4.类的析构函数的作用是()
A.一般成员函数的初始化
B.类的初始化
C.对象的初始化
D.删除类创建的对象
5.假定AB为一个类,则该类的拷贝构造函数的声明语句为
A.AB?&(AB??x)
B.AB(AB??x)
C.AB(AB??&)
D.AB(AB?*?x)
6.下列程序的执行结果为()。 #include void main() { int a=3,b=0; int*p=&a: b=+a++; cout<<*P<<”,”<<endl }
A.3,4
B.4,3
C.3,4
D.4,4
7.如果有如下语句 char str[20]; cin >> str; cout << str; 执行时输入的是“this is a test line!”,则输出的内容是()
A.this is a test line!
B.this is a test line
C.this is atest
D.this
8.类C是以多重继承的方式从类A和类B继承而来的,类A和类B无公共的基类,那么()
A.类C的继承方式只能采用public继承
B.可改用单继承的方式实现类C的同样功能
C.类A和类B至少有一个是抽象类
D.类A和类B至少有一个是虚基类
9.下列有关模板的叙述中,正确的是()
A.函数模板不能含有常规形参
B.函数模板的一个实例就是一个函数定义
C.类模板的成员函数不能是模板函数
D.用类模板定义对象时,绝对不能省略模板实参
10.下列程序的运行结果为()。#include void print(double a) { cout<<++a; } void print(int a,int b) { cout<<b<<a } void main() { print(1.2); cout<<” ”; print(3,4); }
A.1.2?34
B.2.2?34
C.1.2?43
D.2.2?43
11.类B是通过public继承方式从类A派生而来的,且类A和类B都有完整的实现代码,那么下列说法正确的是()
A.类B中具有pubic可访问性的成员函数个数一定不少于类A中public成员函数的个数
B.一个类B的实例对象占用的内存空间一定不少于一个类A的实例对象占用的内存空间
C.只要类B中的构造函数都是public的,在main函数中就可以创建类B的实例对象
D.类A和类B中的同名虚函数的返回值类型必须完全一致
12.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是()
A.友元函数
B.虚函数
C.构造函数
D.析构函数
13.下面描述中,表达错误的是()
A.公有继承时基类中的public成员在派生类中仍是public的
B.公有继承是基类中的private成员在派生类中仍是private的
C.公有继承时基类中的protected成员在派生类中仍是protected的
D.私有继承时基类中的public成员在派生类中是private的
14.在下面的函数声明中,存在着语法错误的是
A.void??BC(int??a?,?int)
B.void??BD(int?,?int)
C.void??BE(int?,?int=5)
D.int??BF(int??x?;?int??y)
15.设int * p2=&x,* p1=a;p2= *b;则a和b的类型分别是()
A.int * 和int
B.int * 和int **
C.int 和int *
D.int * 和int *
二、 多选题 (共 5 道试题,共 20 分)
1.关于公共静态数据成员,下面说法正确的是()
A.在main函数之前创建
B.跟某个具体对象无关
C.可以用类名和成员名直接访问
D.需要在类体外初始化
2.类A中有唯一的一个公有成员函数f,对于类A的一个对象a,执行语句 a.f(100);成功,那么f 的函数原型可以为
A.A& f( int, int=50);
B.void f(int&) const;
C.const A * f(const int );
D.A f( const int&) const;
3.关于构造函数说法正确的是()
A.函数名只能是类名
B.返回类型可以是任意的
C.参数个数和类型可以是任意的
D.在对象创建时自动调用
4.模板定义中的类型参数可以用作()
A.局部变量类型
B.函数参数类型
C.函数返回值类型
D.数据成员类型
5.关于类中重载赋值运算符的正确说法是()
A.由编译器提供的缺省赋值函数具有public访问性并且执行按位赋值
B.在重载派生类的赋值操作时,不但要实现派生类中数据成员的赋值,还要负责基类中数据成员的赋值
C.只有在类中含有指针数据成员或引用数据成员时,才需要重载类的赋值操作
D.通过修改类A的声明或定义,可以禁止用户在类A对象间进行任何赋值操作
三、 判断题 (共 5 道试题,共 20 分)
1.静态成员变量所有的对象拥有一份拷贝
A.错误
B.正确
2.显式类型转换可以把一个变量转换成另外一种数据类型
A.错误
B.正确
3.多态的实现分为两类:编译时的多态和运行时的多态
A.错误
B.正确
4.C++程序的执行只能从main()函数开始,并在main()中结束
A.错误
B.正确
5.虽然抽象类的析构函数可以是纯虚函数,但要实例化其派生类对象,仍必须提供抽象基类中析构函数的函数体
A.错误
B.正确