南开17春学期(清考)《面向对象程序设计》在线作业答案
南开17春学期(清考)《面向对象程序设计》在线作业答案一、单选题:
1.在保护继承中,基类中的私有成员作为派生类的( )。 (满分:2)
A. 公有成员
B. 私有成员
C. 保护成员
D. 不可访问
2.在表达式x+y*z中,+ 是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是( )。 (满分:2)
A. operator+有两个参数,operator*有两个参数
B. operator+有两个参数,operator*有一个参数
C. operator+有一个参数,operator*有两个参数
D. operator+有一个参数,operator*有一个参数
3.下列关于虚函数的说明中,正确的是( )。 (满分:2)
A. 从虚基类继承的函数都是虚函数
B. 虚函数不得是静态成员函数
C. 只能通过指针或引用调用虚函数
D. 抽象类中的成员函数都是虚函数
4.假定MyClass为一类,执行MyClass a,b(2),*p;语句时会自动调用该类构造函数( )次。 (满分:2)
A. 2
B. 3
C. 4
D. 5
5.已知“float *p; p=new float;”,若分配成功,则指针p在堆中获得的字节数为( )。 (满分:2)
A. 2
B. 4
C. 8
D. 不确定
6.下面关于构造函数和析构函数的描述,错误的是( )。 (满分:2)
A. 析构函数中调用虚函数采用静态联编
B. 对虚析构函数的调用可以采用动态联编
C. 当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数
D. 构造函数可以声明为虚函数
7.运行以下程序时,如果由键盘输入6514,则输出结果是( )。#include using namespace std;int main( ){ int m, n; cout>m>>n; while(m!=n) { while(m>n) m-=n; while(n>m) n-=m; } cout<<m<<endl;return 0;} (满分:2)
A. 3
B. 2
C. 1
D. 0
8.下面关于私有继承方式的论述中错误的是( )。 (满分:2)
A. 基类中的私有成员对其对象不可见
B. 基类中的私有成员对其派生类不可见
C. 基类中的公有成员对其派生类可见
D. 基类中的保护成员对其派生类不可见
9.下面描述中,错误的是( )。 (满分:2)
A. 公有继承时,基类中的public成员在派生类中仍是public的
B. 公有继承时,基类中的private成员在派生类中仍是private的
C. 公有继承时,基类中的protected成员在派生类中仍是protected的
D. 私有继承时,基类中的public成员在派生类中是private的
10.变量的引用,其含义是指该变量的( )。 (满分:2)
A. 值
B. 类型
C. 别名
D. 地址
11.在派生类中重新定义虚函数时,除了( ),其他方面都应与基类中相应的虚函数保持一致。 (满分:2)
A. 函数名
B. 参数
C. 函数体
D. 返回值类型
12.下列关于成员函数特征的描述中,错误的是( )。 (满分:2)
A. 成员函数可以重载
B. 成员函数一定是内联函数
C. 成员函数可以设置参数的默认值
D. 成员函数可以是静态的
13.下列关于主函数的叙述中正确的是( )。 (满分:2)
A. 一个程序可以有多个主函数
B. 程序从主函数开始执行
C. 一个程序可以没有主函数
D. 主函数是一个特殊的函数,因此其结构与其他函数不同
14.使用string类,必须在程序中包含头文件( )。 (满分:2)
A. string.h
B. string
C. cstring.h
D. cstring
15.下列关于运算符重载的描述中,正确的是( )。 (满分:2)
A. 运算符重载可以改变操作数的个数
B. 运算符重载可以改变运算符的优先级
C. 运算符重载可以改变运算符的结合性
D. 运算符重载可以使运算符实现特殊功能
16.已知函数原型:void f(int a, int b=3,char c='*'); 则下面的函数调用中,不合法的调用是( )。 (满分:2)
A. f(5)
B. f(5
8)
C. f(6
'#')
D. f(0
0
'#')
17.类的默认的无参构造函数( )。 (满分:2)
A. 在任何情况下都存在
B. 仅当未定义无参构造函数时存在
C. 仅当未定义有参构造函数时存在
D. 仅当未定义任何构造函数时存在
18.友元重载运算符obj1>obj2被C++编译器解释为( )。 (满分:2)
A. operator>(obj1
obj2)
B. >(obj1
obj2)
C. obj1.operator>(obj2)
D. obj2.operator>(obj1)
19.下列关于继承的描述中,错误的是( )。 (满分:2)
A. 基类中的析构函数不能被派生类继承
B. 基类中的保护成员在派生类中无法直接访问
C. 派生类的成员除了包括派生类中自己定义的成员外,还包括它从基类继承的成员
D. 在公有继承方式下基类中公有成员和保护成员的访问权限到派生类保持不变
20.结构化程序设计方法以( )为中心进行分析和设计。 (满分:2)
A. 结构
B. 模块
C. 对象
D. 类
21.运算符重载的目的是( )。 (满分:2)
A. 提高程序的效率
B. 提高代码复用能力
C. 简化程序,减少目标代码
D. 使程序代码直观易读
22.交换两个string类对象所表示的字符串的内容,应该使用string类的( )函数。 (满分:2)
A. assign
B. insert
C. swap
D. find
23.若类中有指针成员变量,则应编写( ),使得在对象销毁时能够自动调用该函数释放指针成员变量所指向的内存空间。 (满分:2)
A. 友元函数
B. 虚函数
C. 构造函数
D. 析构函数
24.程序在调用重载函数时,根据( )区分到底要调用哪个函数。 (满分:2)
A. 函数名
B. 返回值类型
C. 参数个数和类型
D. 以上都可以
25.关于纯虚函数和抽象类的描述中,错误的是( )。 (满分:2)
A. 纯虚函数是一种特殊的虚函数,它没有具体的实现。
B. 抽象类是指具有纯虚函数的类。
C. 一个基类中有纯虚函数,该类的派生类一定不再是抽象类。
D. 抽象类作为基类来使用,其纯虚函数的实现由派生类给出。
26.面向对象程序设计方法以( )为中心进行分析和设计。 (满分:2)
A. 结构
B. 模块
C. 对象
D. 类
27.下列关于this指针的说法,错误的是( )。 (满分:2)
A. this指针指向当前正在操作的对象
B. this指针只存在于非静态成员函数中
C. 在成员函数中对非静态数据成员的访问是通过this指针完成的
D. 静态成员函数中可以通过this指针访问非静态成员
28.抽象类不能定义对象,但可以声明抽象类的( )。 (满分:2)
A. 指针或引用
B. 函数返回类型
C. 显式转换
D. 以上都是
29.派生类中的成员不能访问基类中的( )。 (满分:2)
A. 私有成员
B. 公有成员
C. 保护成员
D. 以上都可以
30.下面对静态数据成员的描述中,正确的是( )。 (满分:2)
A. 静态数据成员可以在类体内进行初始化
B. 静态数据成员不可以被该类的对象调用
C. 静态数据成员不能受private控制符的作用
D. 静态数据成员可以直接用类名访问
31.单目运算符作为类成员函数重载时( )。 (满分:2)
A. 有形参
B. 没有形参
C. 有实参
D. 以上都不正确
32.在一个C++源文件中使用了cin和cout,那么在这个源文件中必须包含( )文件。 (满分:2)
A. iostream
B. fstream
C. stdio.h
D. stdlib.h
33.一个类的友元函数或友元类能够通过成员操作符访问该类的( )。 (满分:2)
A. 私有成员
B. 保护成员
C. 公有成员
D. 所有成员
34.已知“int a=10,*p;int *&r=p; r=&a;*p=20;cout<<a;”,则输出为( )。 (满分:2)
A. 10
B. 20
C. 不确定值
D. 程序有错误
35.类aClass的定义如下:class aClass{public: aClass( ){} aClass(int i){value=new int(i);} int *value;}若要对类中的value赋值,则下面的语句中,正确的是( )。 (满分:2)
A. aClass my; my.value=10;
B. aClass my; *my.value=10;
C. aClass my; my.*value=10;
D. aClass my(10);
三、判断题:
1.一个类的静态数据成员被该类的所有对象共享。 (满分:2)
A. 错误
B. 正确
2.要使语句“MyClass a;”能够编译通过,必须在定义MyClass类时编写无参构造函数。 (满分:2)
A. 错误
B. 正确
3.对虚函数的调用,系统都是采用动态联编。 (满分:2)
A. 错误
B. 正确
4.在C++中,可以声明虚构造函数和虚析构函数。 (满分:2)
A. 错误
B. 正确
5.在C++程序中,有且仅能有一个主函数,且其函数名必须是main。 (满分:2)
A. 错误
B. 正确
6.构造函数不能被派生类继承。 (满分:2)
A. 错误
B. 正确
7.C++语言类定义中默认的访问权限是public。 (满分:2)
A. 错误
B. 正确
8.类中所提供的成员函数可以直接访问该类的私有成员。 (满分:2)
A. 错误
B. 正确
9.在C++中,允许从一个类派生出任意多个类,但不允许某个类同时从多个类派生。 (满分:2)
A. 错误
B. 正确
10.在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。 (满分:2)
A. 错误
B. 正确
11.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:AB operator+(AB &,AB &); (满分:2)
A. 错误
B. 正确
12.抽象类不能定义对象,但可以声明抽象类的指针或引用。 (满分:2)
A. 错误
B. 正确
13.在派生类对象销毁时,系统除了会自动调用派生类的析构函数,还会自动调用基类的析构函数。 (满分:2)
A. 错误
B. 正确
14.私有继承中,对于基类中的所有成员,派生类的成员函数都不可直接访问。 (满分:2)
A. 错误
B. 正确
15.以友元方式重载运算符时,形参列表中至少有一个参数必须是自定义数据类型。 (满分:2)
A. 错误
B. 正确
页:
[1]