|
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.使用string类,必须在程序中包含头文件( )。 (满分:2)
A. string.h
B. string
C. cstring.h
D. cstring
4.已知函数原型:void f(int a, int b=3,char c='*'); 则下面的函数调用中,不合法的调用是( )。 (满分:2)
A. f(5)
B. f(5
8)
C. f(6
'#')
D. f(0
0
'#')
5.虚函数必须是类的( )。 (满分:2)
A. 友元函数
B. 成员函数
C. 构造函数
D. 析构函数
6.下面关于私有继承方式的论述中错误的是( )。 (满分:2)
A. 基类中的私有成员对其对象不可见
B. 基类中的私有成员对其派生类不可见
C. 基类中的公有成员对其派生类可见
D. 基类中的保护成员对其派生类不可见
7.下列运算符中,( )在C++中不能重载。 (满分:2)
A. ?
8.以成员函数方式重载运算符“>”,则obj1>obj2被C++编译器解释为( )。 (满分:2)
B. +
C. -
D. <=
9.下列关于虚函数的说明中,正确的是( )。 (满分:2)
A. operator>(obj1
obj2)
B. >(obj1
obj2)
C. obj1.operator>(obj2)
D. obj2.operator>(obj1)
10.下列关于主函数的叙述中正确的是( )。 (满分:2)
A. 从虚基类继承的函数都是虚函数
B. 虚函数不得是静态成员函数
C. 只能通过指针或引用调用虚函数
D. 抽象类中的成员函数都是虚函数
11.派生类中的成员不能访问基类中的( )。 (满分:2)
A. 一个程序可以有多个主函数
B. 程序从主函数开始执行
C. 一个程序可以没有主函数
D. 主函数是一个特殊的函数,因此其结构与其他函数不同
12.如果一个类至少有一个纯虚函数,那么就称该类是( )。 (满分:2)
A. 私有成员
B. 公有成员
C. 保护成员
D. 以上都可以
13.假定MyClass为一类,执行MyClass a,b(2),*p[2];语句时会自动调用该类构造函数( )次。 (满分:2)
A. 抽象类
B. 虚基类
C. 派生类
D. 以上都不对
14.友元重载运算符obj1>obj2被C++编译器解释为( )。 (满分:2)
A. 2
B. 3
C. 4
D. 5
15.在保护继承中,基类中的私有成员作为派生类的( )。 (满分:2)
A. operator>(obj1
obj2)
B. >(obj1
obj2)
C. obj1.operator>(obj2)
D. obj2.operator>(obj1)
16.抽象类的作用主要是( )。 (满分:2)
A. 公有成员
B. 私有成员
C. 保护成员
D. 不可访问
17.有如下类声明: class Sample { int x; }; 则Sample类成员x是Sample类的( )。 (满分:2)
A. 直接用作基类
B. 直接用作指针
C. 引用的基类型
D. 包括以上各项
18.变量的引用,其含义是指该变量的( )。 (满分:2)
A. 公有数据成员
B. 保护数据成员
C. 私有数据成员
D. 以上选项都不正确
19.有关重载函数的描述正确的是( )。 (满分:2)
A. 值
B. 类型
C. 别名
D. 地址
20.如果类A被说明成类B的友元,则( )。 (满分:2)
A. 函数名相同的函数就是重载函数
B. 函数名相同但返回值类型不同的函数就是重载函数
C. 函数名相同但参数个数或类型不同的函数就是重载函数
D. 函数功能相同的函数就是重载函数
21.已知“float *p; p=new float[2];”,若分配成功,则指针p在堆中获得的字节数为( )。 (满分:2)
A. 类A的成员函数不得访问类B的所有成员
B. 类A的成员函数可以访问类B的所有成员
C. 类A的成员即类B的成员
D. 类B的成员即类A的成员
22.下列关于构造函数调用顺序的描述中,正确的是( )。 (满分:2)
A. 2
B. 4
C. 8
D. 不确定
23.已知“int a=10,*p;int *&r=p; r=&a;*p=20;cout<<a;”,则输出为( )。 (满分:2)
A. 创建派生类对象时,先调用基类的构造函数,后调用派生类的构造函数
B. 创建基类对象时,先调用基类的构造函数,后调用派生类的构造函数
C. 创建派生类对象时,先调用派生类的构造函数,后调用基类的构造函数
D. 创建基类对象时,先调用派生类的构造函数,后调用基类的构造函数
24.运行以下程序时,如果由键盘输入65 14,则输出结果是( )。#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. 10
B. 20
C. 不确定值
D. 程序有错误
25.在一个类中,可以对一个操作符进行( )重载。 (满分:2)
A. 3
B. 2
C. 1
D. 0
26.下列关于运算符重载的描述中,正确的是( )。 (满分:2)
A. 1种
B. 2种
C. 3种
D. 多种
27.运算符重载的目的是( )。 (满分:2)
A. 运算符重载可以改变操作数的个数
B. 运算符重载可以改变运算符的优先级
C. 运算符重载可以改变运算符的结合性
D. 运算符重载可以使运算符实现特殊功能
28.下面对静态数据成员的描述中,正确的是( )。 (满分:2)
A. 提高程序的效率
B. 提高代码复用能力
C. 简化程序,减少目标代码
D. 使程序代码直观易读
29.已知“float *p; p=new float[2];”,若要释放p所指向的堆中的这些字节,下列语句正确的是( )。 (满分:2)
A. 静态数据成员可以在类体内进行初始化
B. 静态数据成员不可以被该类的对象调用
C. 静态数据成员不能受private控制符的作用
D. 静态数据成员可以直接用类名访问
30.下面叙述中错误的是( )。 (满分:2)
A. delete p;
B. delete p[];
C. delete []p;
D. delete p[2];
31.下列对派生类的描述中错误的是( )。 (满分:2)
A. 派生类可以使用private派生
B. 对基类成员的访问必须是无二义性的
C. 基类成员的访问能力在派生类中维持不变
D. 赋值兼容规则也适用于多继承的组合
32.结构化程序设计方法以( )为中心进行分析和设计。 (满分:2)
A. 派生类至少有一个基类
B. 派生类可作为另一个派生类的基类
C. 派生类除了包含它直接定义的成员外,还包含其基类的成员
D. 派生类对其继承的基类的成员访问权限保持不变
33.类的默认的无参构造函数( )。 (满分:2)
A. 结构
B. 模块
C. 对象
D. 类
34.对于拷贝构造函数,正确的描述是( )。 (满分:2)
A. 在任何情况下都存在
B. 仅当未定义无参构造函数时存在
C. 仅当未定义有参构造函数时存在
D. 仅当未定义任何构造函数时存在
35.在一个C++源文件中使用了cin和cout,那么在这个源文件中必须包含( )文件。 (满分:2)
A. 在C++语言中,如果不自定义类的拷贝构造函数,则每个类都有默认的拷贝构造函数
B. 必须为每个类定义拷贝构造函数
C. 如果要使用拷贝构造函数,则必须在类中先定义
D. 当定义了类的构造函数时,如果要使用拷贝构造函数,则必须定义拷贝构造函数
三、判断题:
1.类中所提供的成员函数可以直接访问该类的私有成员。 (满分:2)
A. iostream
B. fstream
C. stdio.h
D. stdlib.h
2.对虚函数的调用,系统都是采用动态联编。 (满分:2)
A. 错误
B. 正确
3.派生类至少有一个基类。 (满分:2)
A. 错误
B. 正确
4.在派生类构造函数的成员初始化列表中,可以包含基类构造函数的调用。 (满分:2)
A. 错误
B. 正确
5.在C++中,可以声明虚构造函数和虚析构函数。 (满分:2)
A. 错误
B. 正确
6.私有继承中,对于基类中的所有成员,派生类的成员函数都不可直接访问。 (满分:2)
A. 错误
B. 正确
7.a为MyClass类对象,“static void SetRate(double r){...}”是MyClass类的静态成员函数,则执行语句“a.SetRate(0.05);”时,SetRate成员函数中的this指针指向对象a的地址。 (满分:2)
A. 错误
B. 正确
8.基类类型的指针可以指向其派生类对象。 (满分:2)
A. 错误
B. 正确
9.在派生类对象销毁时,系统除了会自动调用派生类的析构函数,还会自动调用基类的析构函数。 (满分:2)
A. 错误
B. 正确
10.定义一个虚基类后,则该虚基类后继类层次中的类都需要调用虚基类的构造函数对虚基类中定义的成员变量进行初始化。 (满分:2)
A. 错误
B. 正确
11.一个类的静态数据成员被该类的所有对象共享。 (满分:2)
A. 错误
B. 正确
12.要使语句“MyClass a;”能够编译通过,必须在定义MyClass类时编写无参构造函数。 (满分:2)
A. 错误
B. 正确
13.在C++程序中,有且仅能有一个主函数,且其函数名必须是main。 (满分:2)
A. 错误
B. 正确
14.以友元方式重载运算符时,形参列表中至少有一个参数必须是自定义数据类型。 (满分:2)
A. 错误
B. 正确
15.C++语言类定义中默认的访问权限是public。 (满分:2)
A. 错误
B. 正确
本内容由易百网发布
|
|