西交17年9月课程《面向对象程序设计》作业考核答案
西安交通大学17年9月课程考试《面向对象程序设计》作业考核试题一、单选题:
1.如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为( )。 (满分:2)
A. a.operator+(b)
B. b.operator+(a)
C. operator+(a
b)
D. operator(a+b)
2.派生类的成员函数可以直接访问基类的( )成员。 (满分:2)
A. 所有
B. 公有和保护
C. 保护和私有
D. 私有
3.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为( )。 (满分:2)
A. int *p=new int;
B. int *p=new int(30);
C. int *p=new ;
D. *p=new int;
4.下列的符号常变量定义中,错误的定义是( )。 (满分:2)
A. const M=10;
B. const int M=20;
C. const char ch;
D. const bool mark=true;
5.类的析构函数是一个对象被( )时自动调用的。 (满分:2)
A. 建立
B. 撤消
C. 赋值
D. 引用
6.在创建派生类对象时,构造函数的执行顺序是( )。 (满分:2)
A. 对象成员构造函数、基类构造函数、派生类本身的构造函数
B. 派生类本身的构造函数、基类构造函数、对象成员构造函数
C. 基类构造函数、派生类本身的构造函数、对象成员构造函数
D. 基类构造函数、对象成员构造函数、派生类本身的构造函数
7.类的析构函数的作用是( )。 (满分:2)
A. 一般成员函数
B. 类的初始化
C. 对象的初始化
D. 对象释放后的操作
8.下列关于成员函数特征的描述中,( )是错误的。 (满分:2)
A. 成员函数一定是内置函数
B. 成员函数可以重载
C. 成员函数可以设置参数的默认值
D. 成员函数可以是静态的
9.类的析构函数是在( )调用的。 (满分:2)
A. 类创建时
B. 创建对象时
C. 对象生命期结束时
D. 不自动调用
10.C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是( )。 (满分:2)
A. 增加了一些新的运算符
B. 允许函数重载,并允许设置缺省参数
C. 规定函数说明符必须用原型
D. 引进了类和对象的概念
11.假定AB为一个类,则执行 “AB x(a,5);”语句时将自动调用该类的( )。 (满分:2)
A. 带参构造函数
B. 无参构造函数
C. 复制构造函数
D. 赋值重载函数
12.假定AB为一个类,则执行 “AB x;”语句时将自动调用该类的( )。 (满分:2)
A. 带参构造函数
B. 无参构造函数
C. 拷贝构造函数
D. 赋值重载函数
13.一个类的构造函数为 “B(int ax, int bx): a(ax), b(bx) {}”,执行 “B x(1,2),y(3,4);x=y;”语句序列后x.a的值为( )。 (满分:2)
A. 1
B. 2
C. 3
D. 4
14.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为( )。 (满分:2)
A. int
B. char
C. AA
D. AA*
15.下面是重载双目运算符+的普通函数原形,其中最符合+原来含义的是( )。 (满分:2)
A. Value operator+(Value
Value);
B. Value operator+(Value
int);
C. Value &operator+(Value
Value*);
D. Value &operator+(Value&
Value&);
16.用new运算符创建一个含有10个元素的一维整型数组的正确语句是( )。 (满分:2)
A. int p = new int(10);
B. int p = new int;
C. int *p = new int ;
D. int *p = new int(10);
17.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为( )。 (满分:2)
A. abc
B. *this
C. this
D. this&
18.在定义一个派生类时,若不使用保留字显式地规定采用何种继承方式,则默认为( )方式。 (满分:2)
A. 私有继承
B. 非私有继承
C. 保护继承
D. 公用继承
19.下列特性不是面向对象程序设计语言所特有的是( )。 (满分:2)
A. 数据封装
B. 继承
C. 多态性
D. 模板
20.假定AB为一个类,则执行 “AB a;”语句时调用该类无参构造函数的次数为( )。 (满分:2)
A. 0
B. 1
C. 9
D. 10
21.构造函数不具备的特征是( )。 (满分:2)
A. 构造函数的函数名与类名相同
B. 构造函数可以重载
C. 构造函数可以设置默认参数
D. 构造函数必须指定类型说明
22.实现运行时的多态性要使用( )。 (满分:2)
A. 重载函数
B. 析构函数
C. 构造函数
D. 虚函数
23.能够释放对象所占资源的是( )。 (满分:2)
A. 析构函数
B. 数据成员
C. 构造函数
D. 静态成员函数
24.基类和派生类可以分别称为( )。 (满分:2)
A. “大类”和“小类”
B. “父类”和“子类”
C. “小类”和“大类”
D. “子类”和“父类”
25.一个类的析构函数通常被定义为该类的( )成员。 (满分:2)
A. 私有
B. 保护
C. 公用
D. 友元
26.当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储( )个整数。 (满分:2)
A. n
B. n+1
C. n-1
D. 1
27.以下正确的函数原型语句是( )。 (满分:2)
A. double fun(int x
int y)
B. double fun(int x;int y)
C. double fun(int
int);
D. double fun(int x
y);
28.采用重载函数的目的是( )。 (满分:2)
A. 函数模板也是一个具体类型的函数
B. 函数模板的类型参数与函数的参数是同一个概念
C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数定义
D. 用函数模板定义的函数没有类型
29.假定一个类对象数组为A,当离开它定义的作用域时,系统自动调用该类析构函数的次数为( )。 (满分:2)
A. 0
B. 1
C. n
D. n-1
30.以下关于函数模板的论述中,正确的是( )。 (满分:2)
A. 一旦定义了函数模板,就不能再定义同名的重载函数
B. 从同一个函数模板实例化后得到的多个模板函数属于函数重载;
C. 函数模板中只有一种参数;
D. 在定义函数模板时,template语句与函数模板定义语句之间可以有别的语句。
三、判断题:
1.使用new运算符创建数组时,可以为该数组指定初始值( )。 (满分:2)
A. 错误
B. 正确
2.使用虚函数可以避免多重继承产生的二义性。( ) (满分:2)
A. 错误
B. 正确
3.Iostream是抽象基类ios的直接派生类.。( ) (满分:2)
A. 错误
B. 正确
4.析构函数必须指定返回类型以及函数参数。( ) (满分:2)
A. 错误
B. 正确
5.析构函数不能被继承。( ) (满分:2)
A. 错误
B. 正确
6.在声明派生类时,派生类把基类的的构造函数也一起继承过来。( ) (满分:2)
A. 错误
B. 正确
7.C++中的字符串输入输出通常指定一个字符数组作为存储空间,它只能输入输出string类数据。( ) (满分:2)
A. 错误
B. 正确
8.构造函数可以重载。( ) (满分:2)
A. 错误
B. 正确
9.私有继承的派生类不能访问基类中的私有成员,但公用继承的派生类可以访问基类中的私有成员。( ) (满分:2)
A. 错误
B. 正确
10.在调用构造函数时不必给出实参的构造函数称为默认构造函数。一个类只能有一个默认构造函数。( ) (满分:2)
A. 错误
B. 正确
11.运算符重载以后,其优先级和结合性都不能改变。( ) (满分:2)
A. 错误
B. 正确
12.若类Y是类X的私有派生类,类Z是类Y的公用派生类,则类Z不能访问类X 的公用成员和保护成员。( ) (满分:2)
A. 错误
B. 正确
13.对使用默认参数的构造函数,如果在类外定义构造函数,应该在定义构造函数时指定默认值( )。 (满分:2)
A. 错误
B. 正确
14.使用虚函数无法避免多重继承产生的二义性。( ) (满分:2)
A. 错误
B. 正确
15.C++中设置虚基类的目的是实现运算时的多态性。( ) (满分:2)
A. 错误
B. 正确
16.在用class定义一个类时,如果不加声明,数据成员和成员函数默认的访问权限是public。( ) (满分:2)
A. 错误
B. 正确
17.重载函数不能改变运算符运算对象的个数。( ) (满分:2)
A. 错误
B. 正确
18.如果定义了一个类的对象数组,该数组有10个元素,则要调用10次构造函数来对每个元素初始化。( )。 (满分:2)
A. 错误
B. 正确
19.不可以定义抽象类的对象。( ) (满分:2)
A. 错误
B. 正确
20.在类的继承层次结构中,在不同的层次中不能出现名字相同、参数个数和类型都相同而功能不同的函数。( ) (满分:2)
A. 错误
B. 正确
页:
[1]