黄老师 发表于 2013-5-30 05:35:47

南开13春《面向对象程序设计》在线作业答案

南开13春《面向对象程序设计》在线作业
试卷总分:100   测试时间:--
一、单选题(共35道试题,共70分。)
1.若类中有指针成员变量,则应编写(),使得在对象销毁时能够自动调用该函数释放指针成员变量所指向的内存空间。
A. 友元函数
B. 虚函数
C. 构造函数
D. 析构函数
满分:2分
2.执行语句“string str("abc");”时,系统会自动调用string类的构造函数()。
A. string()
B. string(const char *s)
C. string(const string &str)
D. string(size_type n, char c)
满分:2分
3.下面关于构造函数和析构函数的描述,错误的是()。
A. 析构函数中调用虚函数采用静态联编
B. 对虚析构函数的调用可以采用动态联编
C. 当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数
D. 构造函数可以声明为虚函数
满分:2分
4.下列关于类和对象的叙述中,错误的是()。
A. 一个类只能有一个对象
B. 对象是类的具体实例
C. 类是某一类对象的抽象
D. 类和对象的关系是一种数据类型与变量的关系
满分:2分
5.多继承的构造函数顺序可分为如下4步: ①所有非虚基类的构造函数按照它们被继承的顺序构造。 ②所有虚基类的构造函数按照它们被继承的顺序构造。 ③所有子对象的构造函数按照它们声明的顺序构造。 ④派生类自己的构造函数体这四个步骤的正确顺序是()。
A. ④③①②
B. ②④③①
C. ②①③④
D. ③④①②
满分:2分
6.类的默认的无参构造函数()。
A. 在任何情况下都存在
B. 仅当未定义无参构造函数时存在
C. 仅当未定义有参构造函数时存在
D. 仅当未定义任何构造函数时存在
满分:2分
7.下列对派生类的描述中错误的是()。
A. 派生类至少有一个基类
B. 派生类可作为另一个派生类的基类
C. 派生类除了包含它直接定义的成员外,还包含其基类的成员
D. 派生类对其继承的基类的成员访问权限保持不变
满分:2分
8.下列关于动态联编的描述中,错误的是()。
A. 动态联编是以虚函数为基础的
B. 动态联编是在运行时确定所调用的函数代码的
C. 动态联编调用函数操作是通过指向对象的指针或对象
D. 动态联编是在编译时确定操作函数的
满分:2分
9.将一个string类对象赋予新值,应该使用string类的()函数。
A. assign
B. insert
C. swap
D. find
满分:2分
10.下列关于赋值运算符重载的说法中正确的是()。
A. 返回值一般是以引用方式返回的对象,而函数体中总是用语句“return *this;”返回this指针所指向的对象
B. 赋值运算符只能以非成员函数的方式重载
C. 赋值运算符既可以以成员函数的方式重载,又可以以非成员函数的方式重载
D. 以上均不正确
满分:2分
11.下列关于构造函数说法不正确的是()。
A. 构造函数必须与类同名
B. 构造函数可以省略不写
C. 构造函数必须有返回值
D. 在构造函数中可以对类中的成员进行初始化
满分:2分
12.面向对象程序设计方法以()为中心进行分析和设计。
A. 结构
B. 模块
C. 对象
D. 类
满分:2分
13.派生类中的成员不能访问基类中的()。
A. 私有成员
B. 公有成员
C. 保护成员
D. 以上都可以
满分:2分
14.下面叙述中错误的是()。
A. 派生类可以使用private派生
B. 对基类成员的访问必须是无二义性的
C. 基类成员的访问能力在派生类中维持不变
D. 赋值兼容规则也适用于多继承的组合
满分:2分
15.在使用类创建对象时,系统会自动调用该对象的()完成对象中数据成员的初始化等操作。
A. 友元函数
B. 虚函数
C. 构造函数
D. 析构函数
满分:2分
16.假设堆内存分配均成功,则下面程序段完全正确的是()。
A. int *p=new int(3);cout<<*p;delete p;
B. int *p=new int={1,2,3,4,5};for(int i=0;i<5;i++)cout<<p;delete []p;
C. int *p=new int;for(int i=0;i<5;i++,p++) {*p=i; cout<<*p;}delete []p;
D. 以上程序段均正确
满分:2分
17.在一个string类对象表示的字符串中插入新字符,应该使用string类的()函数。
A. assign
B. insert
C. swap
D. find
满分:2分
18.如果一个类至少有一个纯虚函数,那么就称该类是()。
A. 抽象类
B. 虚基类
C. 派生类
D. 以上都不对
满分:2分
19.“#include <iostream>”是()预处理命令。
A. 宏定义
B. 文件包含
C. 条件编译
D. 工程配置
满分:2分
20.虚函数必须是类的()。
A. 友元函数
B. 成员函数
C. 构造函数
D. 析构函数
满分:2分
21.下列关于运算符重载正确的是()。
A. 运算符重载可以改变运算符的操作数个数
B. 运算符重载可以改变运算符的优先级
C. 运算符重载可以改变运算符的结合性
D. 运算符重载不可以改变语法结构
满分:2分
22.任意一个类,析构函数的个数最多是()。
A. 不限个数
B. 1
C. 2
D. 3
满分:2分
23.在保护继承中,基类中的私有成员作为派生类的()。
A. 公有成员
B. 私有成员
C. 保护成员
D. 不可访问
满分:2分
24.已知函数原型:void f(int a, int b=3,char c='*'); 则下面的函数调用中,不合法的调用是()。
A. f(5)
B. f(5,8)
C. f(6, , '#')
D. f(0,0, '#')
满分:2分
25.抽象类的作用主要是()。
A. 直接用作基类
B. 直接用作指针
C. 引用的基类型
D. 包括以上各项
满分:2分
26.有如下类声明: class Sample { int x; }; 则Sample类成员x是Sample类的()。
A. 公有数据成员
B. 保护数据成员
C. 私有数据成员
D. 以上选项都不正确
满分:2分
27.结构化程序设计方法以()为中心进行分析和设计。
A. 结构
B. 模块
C. 对象
D. 类
满分:2分
28.以下为重载函数的一组函数声明的是()。
A. void print(int); void print(double);
B. void fun(int); int fun(int);
C. int max(int,int); int min(int,int);
D. void mm(); int mm();
满分:2分
29.有关带默认参数的函数的描述正确的是()。
A. 只能在函数定义时设置默认参数值
B. 只能在函数声明时设置默认参数值
C. 函数调用时,必须使用默认的参数值,不能给出新的实参值
D. 设置默认参数时,应该设置最右边的若干个参数的默认值
满分:2分
30.已知“int a=10;int &r=a; r=r+20;cout<<a;”,则输出为()。
A. 10
B. 20
C. 30
D. 不确定值
满分:2分
31.下列关于虚函数的说明中,正确的是()。
A. 从虚基类继承的函数都是虚函数
B. 虚函数不得是静态成员函数
C. 只能通过指针或引用调用虚函数
D. 抽象类中的成员函数都是虚函数
满分:2分
32.下列关于继承的描述中,错误的是()。
A. 基类中的析构函数不能被派生类继承
B. 基类中的保护成员在派生类中无法直接访问
C. 派生类的成员除了包括派生类中自己定义的成员外,还包括它从基类继承的成员
D. 在公有继承方式下基类中公有成员和保护成员的访问权限到派生类保持不变
满分:2分
33.在一个C++源文件中使用了cin和cout,那么在这个源文件中必须包含()文件。
A. iostream
B. fstream
C. stdio.h
D. stdlib.h
满分:2分
34.静态数据成员初始化在()进行,而且前面不加static,以免与一般静态变量或对象相混淆。
A. 类体内
B. 类体外
C. 构造函数内
D. 内联函数内
满分:2分
35.在表达式x+y*z中,+ 是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是()。
A. operator+有两个参数,operator*有两个参数
B. operator+有两个参数,operator*有一个参数
C. operator+有一个参数,operator*有两个参数
D. operator+有一个参数,operator*有一个参数
满分:2分
二、判断题(共15道试题,共30分。)
1.抽象类虽然也是一种数据类型,但它不能建立对象,只能作为基类被其他类继承。
A. 错误
B. 正确
满分:2分
2.构造函数不能被派生类继承。
A. 错误
B. 正确
满分:2分
3.一个类的静态数据成员被该类的所有对象共享。
A. 错误
B. 正确
满分:2分
4.在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。
A. 错误
B. 正确
满分:2分
5.对虚函数的调用,系统都是采用动态联编。
A. 错误
B. 正确
满分:2分
6.在C++中,可以声明虚构造函数和虚析构函数。
A. 错误
B. 正确
满分:2分
7.基类类型的指针可以指向其派生类对象。
A. 错误
B. 正确
满分:2分
8.定义一个虚基类后,则该虚基类后继类层次中的类都需要调用虚基类的构造函数对虚基类中定义的成员变量进行初始化。
A. 错误
B. 正确
满分:2分
9.在派生类构造函数的成员初始化列表中,可以包含基类构造函数的调用。
A. 错误
B. 正确
满分:2分
10.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: AB operator+(AB &,AB &);
A. 错误
B. 正确
满分:2分
11.要使语句“MyClass a;”能够编译通过,必须在定义MyClass类时编写无参构造函数。
A. 错误
B. 正确
满分:2分
12.C++语言类定义中默认的访问权限是public。
A. 错误
B. 正确
满分:2分
13.在C++中,允许从一个类派生出任意多个类,但不允许某个类同时从多个类派生。
A. 错误
B. 正确
满分:2分
14.派生类至少有一个基类。
A. 错误
B. 正确
满分:2分
15.在派生类对象销毁时,系统除了会自动调用派生类的析构函数,还会自动调用基类的析构函数。
A. 错误
B. 正确
满分:2分
页: [1]
查看完整版本: 南开13春《面向对象程序设计》在线作业答案