南开17秋学期《面向对象程序设计》在线作业(答案)
17秋学期《面向对象程序设计》在线作业一、单选题:【35道,总分:70分】南开大学
1.在一个C++源文件中使用了cin和cout,那么在这个源文件中必须包含( )文件。 (满分:2)
A. iostream
B. fstream
C. stdio.h
D. stdlib.h
2.在保护继承中,基类中的私有成员作为派生类的( )。 (满分:2)
A. 公有成员
B. 私有成员
C. 保护成员
D. 不可访问
3.有如下类声明: class Sample { int x; }; 则Sample类成员x是Sample类的( )。 (满分:2)
A. 公有数据成员
B. 保护数据成员
C. 私有数据成员
D. 以上选项都不正确
4.抽象类不能定义对象,但可以声明抽象类的( )。 (满分:2)
A. 指针或引用
B. 函数返回类型
C. 显式转换
D. 以上都是
5.单目运算符作为类成员函数重载时( )。 (满分:2)
A. 有形参
B. 没有形参
C. 有实参
D. 以上都不正确
6.在C++中,通过( )的机制可以对原有的类进行扩充和完善以适应新的需要。 (满分:2)
A. 继承
B. 封装
C. 多态
D. 重载
7.如果一个类至少有一个纯虚函数,那么就称该类是( )。 (满分:2)
A. 抽象类
B. 虚基类
C. 派生类
D. 以上都不对
8.有关带默认参数的函数的描述正确的是( )。 (满分:2)
A. 只能在函数定义时设置默认参数值
B. 只能在函数声明时设置默认参数值
C. 函数调用时,必须使用默认的参数值,不能给出新的实参值
D. 设置默认参数时,应该设置最右边的若干个参数的默认值
9.下列关于虚函数的说明中,正确的是( )。 (满分:2)
A. 从虚基类继承的函数都是虚函数
B. 虚函数不得是静态成员函数
C. 只能通过指针或引用调用虚函数
D. 抽象类中的成员函数都是虚函数
10.下列关于赋值运算符重载的说法中正确的是( )。 (满分:2)
A. 返回值一般是以引用方式返回的对象,而函数体中总是用语句“return *this;”返回this指针所指向的对象
B. 赋值运算符只能以非成员函数的方式重载
C. 赋值运算符既可以以成员函数的方式重载,又可以以非成员函数的方式重载
D. 以上均不正确
11.已知“int a=10;int &r=a; r=r+20;cout<<a;”,则输出为( )。 (满分:2)
A. 10
B. 20
C. 30
D. 不确定值
12.友元重载运算符obj1>obj2被C++编译器解释为( )。 (满分:2)
A. operator>(obj1,obj2)
B. >(obj1,obj2)
C. obj1.operator>(obj2)
D. obj2.operator>(obj1)
13.结构化程序设计方法以( )为中心进行分析和设计。 (满分:2)
A. 结构
B. 模块
C. 对象
D. 类
14.已知“float *p; p=new float;”,若分配成功,则指针p在堆中获得的字节数为( )。 (满分:2)
A. 2
B. 4
C. 8
D. 不确定
15.类对象占用内存的大小与( )有关。 (满分:2)
A. 数据成员
B. 成员函数
C. 数据成员和成员函数
D. 私有成员
16.抽象类的作用主要是( )。 (满分:2)
A. 直接用作基类
B. 直接用作指针
C. 引用的基类型
D. 包括以上各项
17.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )。 (满分:2)
A. 派生类的对象可以直接访问基类的所有成员
B. 派生类的对象可以初始化基类的引用
C. 派生类的对象不可以直接访问基类中的私有成员
D. 派生类的对象的地址可以赋给指向基类的指针
18.在派生类中重新定义虚函数时,除了( ),其他方面都应与基类中相应的虚函数保持一致。 (满分:2)
A. 函数名
B. 参数
C. 函数体
D. 返回值类型
19.基类的( )在私有继承时在派生类中为私有成员函数,在公有和保护继承时在派生类中为保护成员函数。 (满分:2)
A. 私有成员函数
B. 保护成员函数
C. 公有成员
D. 保护数据成员
20.关于纯虚函数和抽象类的描述中,错误的是( )。 (满分:2)
A. 纯虚函数是一种特殊的虚函数,它没有具体的实现。
B. 抽象类是指具有纯虚函数的类。
C. 一个基类中有纯虚函数,该类的派生类一定不再是抽象类。
D. 抽象类作为基类来使用,其纯虚函数的实现由派生类给出。
21.下列关于运算符重载正确的是( )。 (满分:2)
A. 运算符重载可以改变运算符的操作数个数
B. 运算符重载可以改变运算符的优先级
C. 运算符重载可以改变运算符的结合性
D. 运算符重载不可以改变语法结构
22.将一个函数声明为某类的友元函数后,则在函数中不可以直接访问该类的( )。 (满分:2)
A. 公有成员
B. 私有成员
C. 保护成员
D. 都可访问
23.假定MyClass为一类,执行MyClass a,b(2),*p;语句时会自动调用该类构造函数( )次。 (满分:2)
A. 2
B. 3
C. 4
D. 5
24.对A、B两个类进行多重继承得到派生类C,则创建派生类C的对象时,从基类B中继承过来的成员变量由( )类的构造函数进行初始化。 (满分:2)
A. A
B. B
C. C
D. 都可以
25.“#include ”是( )预处理命令。 (满分:2)
A. 宏定义
B. 文件包含
C. 条件编译
D. 工程配置
26.虚函数必须是类的( )。 (满分:2)
A. 友元函数
B. 成员函数
C. 构造函数
D. 析构函数
27.在使用类创建对象时,系统会自动调用该对象的( )完成对象中数据成员的初始化等操作。 (满分:2)
A. 友元函数
B. 虚函数
C. 构造函数
D. 析构函数
28.静态数据成员初始化在( )进行,而且前面不加static,以免与一般静态变量或对象相混淆。 (满分:2)
A. 类体内
B. 类体外
C. 构造函数内
D. 内联函数内
29.使用string类,必须在程序中包含头文件( )。 (满分:2)
A. string.h
B. string
C. cstring.h
D. cstring
30.类MyClass的定义如下:class MyClass{public: MyClass( ) { value = 0;} SetVariable(int i) { value = i; }private: int value;}则对下列语句序列正确的描述是( )。 MyClass *p,my;p=&my; (满分:2)
A. 语句p=&my;是把对象my赋值给指针变量p
B. 语句MyClass *p,my;会调用两次类MyClass的构造函数
C. 对语句 *p.SetVariable(5)的调用是正确的
D. 语句p->SetVariable(5)与语句my.SetVariable(5)等价
31.多继承的构造函数顺序可分为如下4步:①所有非虚基类的构造函数按照它们被继承的顺序构造。②所有虚基类的构造函数按照它们被继承的顺序构造。③所有子对象的构造函数按照它们声明的顺序构造。④派生类自己的构造函数体这四个步骤的正确顺序是( )。 (满分:2)
A. ④③①②
B. ②④③①
C. ②①③④
D. ③④①②
32.类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);
33.在一个类中,可以对一个操作符进行( )重载。 (满分:2)
A. 1种
B. 2种
C. 3种
D. 多种
34.下列关于构造函数调用顺序的描述中,正确的是( )。 (满分:2)
A. 创建派生类对象时,先调用基类的构造函数,后调用派生类的构造函数
B. 创建基类对象时,先调用基类的构造函数,后调用派生类的构造函数
C. 创建派生类对象时,先调用派生类的构造函数,后调用基类的构造函数
D. 创建基类对象时,先调用派生类的构造函数,后调用基类的构造函数
35.下列关于类和对象的叙述中,错误的是( )。 (满分:2)
A. 一个类只能有一个对象
B. 对象是类的具体实例
C. 类是某一类对象的抽象
D. 类和对象的关系是一种数据类型与变量的关系
二、判断题:【15道,总分:30分】
1.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:AB operator+(AB &,AB &); (满分:2)
A. 错误
B. 正确
2.在C++中,允许从一个类派生出任意多个类,但不允许某个类同时从多个类派生。 (满分:2)
A. 错误
B. 正确
3.基类类型的指针可以指向其派生类对象。 (满分:2)
A. 错误
B. 正确
4.在C++程序中,有且仅能有一个主函数,且其函数名必须是main。 (满分:2)
A. 错误
B. 正确
5.在派生类构造函数的成员初始化列表中,可以包含基类构造函数的调用。 (满分:2)
A. 错误
B. 正确
6.要使语句“MyClass a;”能够编译通过,必须在定义MyClass类时编写无参构造函数。 (满分:2)
A. 错误
B. 正确
7.构造函数不能被派生类继承。 (满分:2)
A. 错误
B. 正确
8.一个类的静态数据成员被该类的所有对象共享。 (满分:2)
A. 错误
B. 正确
9.C++语言类定义中默认的访问权限是public。 (满分:2)
A. 错误
B. 正确
10.在派生类对象销毁时,系统除了会自动调用派生类的析构函数,还会自动调用基类的析构函数。 (满分:2)
A. 错误
B. 正确
11.抽象类不能定义对象,但可以声明抽象类的指针或引用。 (满分:2)
A. 错误
B. 正确
12.在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。 (满分:2)
A. 错误
B. 正确
13.以友元方式重载运算符时,形参列表中至少有一个参数必须是自定义数据类型。 (满分:2)
A. 错误
B. 正确
14.对虚函数的调用,系统都是采用动态联编。 (满分:2)
A. 错误
B. 正确
15.私有继承中,对于基类中的所有成员,派生类的成员函数都不可直接访问。 (满分:2)
A. 错误
B. 正确
更多学习资料请登录www.openhelp100.com
页:
[1]