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

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

【奥鹏】[南开大学]18春学期《面向对象程序设计》在线作业

试卷总分:100 得分:100

第1题,面向对象程序设计方法以()为中心进行分析和设计。

A、结构

B、模块

C、对象

D、类

正确答案:C

第2题,已知函数原型:void f(int a, int b=3,char c='*'); 则下面的函数调用中,不合法的调用是()。

A、f(5)

B、f(5,8)

C、f(6, , '#')

D、f(0,0, '#')

正确答案:C

第3题,有关带默认参数的函数的描述正确的是()。

A、只能在函数定义时设置默认参数值

B、只能在函数声明时设置默认参数值

C、函数调用时,必须使用默认的参数值,不能给出新的实参值

D、设置默认参数时,应该设置最右边的若干个参数的默认值

正确答案:D

第4题,下列关于虚函数的说明中,正确的是()。

A、从虚基类继承的函数都是虚函数

B、虚函数不得是静态成员函数

C、只能通过指针或引用调用虚函数

D、抽象类中的成员函数都是虚函数

正确答案:B

第5题,下列运算符中,()在C++中不能重载。

A、?:

B、+

C、-

D、=

正确答案:A

第6题,下面关于私有继承方式的论述中错误的是()。

A、基类中的私有成员对其对象不可见

B、基类中的私有成员对其派生类不可见

C、基类中的公有成员对其派生类可见

D、基类中的保护成员对其派生类不可见

正确答案:D

第7题,如果一个类至少有一个纯虚函数,那么就称该类是()。

A、抽象类

B、虚基类

C、派生类

D、以上都不对

正确答案:A

第8题,类的默认的无参构造函数()。

A、在任何情况下都存在

B、仅当未定义无参构造函数时存在

C、仅当未定义有参构造函数时存在

D、仅当未定义任何构造函数时存在

正确答案:D

第9题,对A、B两个类进行多重继承得到派生类C,则创建派生类C的对象时,从基类B 中继承过来的成员变量由()类的构造函数进行初始化。

A、A

B、B

C、C

D、都可以

正确答案:B

第10题,静态数据成员初始化在()进行,而且前面不加static,以免与一般静态变量或对象相混淆。

A、类体内

B、类体外

C、构造函数内

D、内联函数内

正确答案:B

第11题,类对象占用内存的大小与()有关。

A、数据成员

B、成员函数

C、数据成员和成员函数

D、私有成员

正确答案:A

第12题,类aClass的定义如下:

class aClass

{public:aClass(){}aClass(int i){value=new int(i);}int *value;

}

若要对类中的value赋值,则下面的语句中,正确的是()。

A、aClass my; my.value=10;

B、aClass my; *my.value=10;

C、aClass my; my.*value=10;

D、aClass my(10);

正确答案:D

第13题,假定MyClass为一类,执行MyClass a,b(2),*p[2];语句时会自动调用该类构造函数()次。

A、2

B、3

C、4

D、5

正确答案:A

第14题,假设堆内存分配均成功,则下面程序段完全正确的是()。

A、int *p=new int(3);cout*p;delete p;

B、int *p=new int[5]={1,2,3,4,5};for(int i=0;i5;i++)coutp[i];delete []p;

C、int *p=new int[5];for(int i=0;i5;i++,p++) {*p=i; cout*p;}delete []p;

D、以上程序段均正确

正确答案:A

第15题,下列关于构造函数说法不正确的是()。

A、构造函数必须与类同名

B、构造函数可以省略不写

C、构造函数必须有返回值

D、在构造函数中可以对类中的成员进行初始化

正确答案:C

第16题,下列关于构造函数调用顺序的描述中,正确的是()。

A、创建派生类对象时,先调用基类的构造函数,后调用派生类的构造函数

B、创建基类对象时,先调用基类的构造函数,后调用派生类的构造函数

C、创建派生类对象时,先调用派生类的构造函数,后调用基类的构造函数

D、创建基类对象时,先调用派生类的构造函数,后调用基类的构造函数

正确答案:A

第17题,下列关于this指针的说法,错误的是()。

A、this指针指向当前正在操作的对象

B、this指针只存在于非静态成员函数中

C、在成员函数中对非静态数据成员的访问是通过this指针完成的

D、静态成员函数中可以通过this指针访问非静态成员

正确答案:D

第18题,已知“float *p; p=new float[2];”,若要释放p所指向的堆中的这些字节,下列语句正确的是()。

A、delete p;

B、delete p[];

C、delete []p;

D、delete p[2];

正确答案:C

第19题,下列关于成员函数特征的描述中,错误的是()。

A、成员函数可以重载

B、成员函数一定是内联函数

C、成员函数可以设置参数的默认值

D、成员函数可以是静态的

正确答案:B

第20题,下面关于类的成员函数描述不正确的是()。

A、静态成员函数内可以直接访问类的非静态成员数据

B、静态成员函数内可以直接访问类的静态成员数据

C、非静态成员函数可以直接访问类的非静态成员数据

D、非静态成员函数可以直接访问类的静态成员数据

正确答案:A

第21题,下列关于运算符重载正确的是()。

A、运算符重载可以改变运算符的操作数个数

B、运算符重载可以改变运算符的优先级

C、运算符重载可以改变运算符的结合性

D、运算符重载不可以改变语法结构

第22题,下面对静态数据成员的描述中,正确的是()。

A、静态数据成员可以在类体内进行初始化

B、静态数据成员不可以被该类的对象调用

C、静态数据成员不能受private控制符的作用

D、静态数据成员可以直接用类名访问

正确答案:D

第23题,友元重载运算符obj1obj2被C++编译器解释为()。

A、operator(obj1,obj2)

B、(obj1,obj2)

C、obj1.operator(obj2)

D、obj2.operator(obj1)

正确答案:A

第24题,下列关于动态联编的描述中,错误的是()。

A、动态联编是以虚函数为基础的

B、动态联编是在运行时确定所调用的函数代码的

C、动态联编调用函数操作是通过指向对象的指针或对象

D、动态联编是在编译时确定操作函数的

正确答案:D

第25题,抽象类的作用主要是()。

A、直接用作基类

B、直接用作指针

C、引用的基类型

D、包括以上各项

正确答案:D

第26题,交换两个string类对象所表示的字符串的内容,应该使用string类的()函数。

A、assign

B、insert

C、swap

D、find

正确答案:C

第27题,任意一个类,析构函数的个数最多是()。

B、1

C、2

D、3

正确答案:B

第28题,派生类中的成员不能访问基类中的()。

A、私有成员

B、公有成员

C、保护成员

D、以上都可以

正确答案:A

第29题,多继承的构造函数顺序可分为如下4步:

①所有非虚基类的构造函数按照它们被继承的顺序构造。

②所有虚基类的构造函数按照它们被继承的顺序构造。

③所有子对象的构造函数按照它们声明的顺序构造。

④派生类自己的构造函数体

这四个步骤的正确顺序是()。

A、④③①②

B、②④③①

C、②①③④

D、③④①②

正确答案:C

第30题,要在类对象上使用运算符,以下不用必须被重载的运算符是()。

A、[ ]

B、=

C、++

D、--

正确答案:B

第31题,下列关于类和对象的叙述中,错误的是()。

A、一个类只能有一个对象

B、对象是类的具体实例

C、类是某一类对象的抽象

D、类和对象的关系是一种数据类型与变量的关系

正确答案:A

第32题,在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是()。

A、派生类的对象可以直接访问基类的所有成员

B、派生类的对象可以初始化基类的引用

C、派生类的对象不可以直接访问基类中的私有成员

D、派生类的对象的地址可以赋给指向基类的指针

正确答案:A

第33题,下列关于运算符重载的描述中,正确的是()。

A、运算符重载可以改变操作数的个数

B、运算符重载可以改变运算符的优先级

C、运算符重载可以改变运算符的结合性

D、运算符重载可以使运算符实现特殊功能

正确答案:D

第34题,下列关于主函数的叙述中正确的是()。

A、一个程序可以有多个主函数

B、程序从主函数开始执行

C、一个程序可以没有主函数

D、主函数是一个特殊的函数,因此其结构与其他函数不同

正确答案:B

第35题,在一个string类对象表示的字符串中查找子串,应该使用string类的()函数。

A、assign

B、insert

C、swap

D、find

正确答案:D

第36题,假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:

AB operator+(AB &,AB &);

A、错误

B、正确

正确答案:A

第37题,在派生类构造函数的成员初始化列表中,可以包含基类构造函数的调用。

A、错误

B、正确

正确答案:B

第38题,基类类型的指针可以指向其派生类对象。

A、错误

B、正确

正确答案:B

第39题,在C++中,可以声明虚构造函数和虚析构函数。

A、错误

B、正确

正确答案:A

第40题,抽象类不能定义对象,但可以声明抽象类的指针或引用。

A、错误

B、正确

正确答案:B

第41题,派生类至少有一个基类。

A、错误

B、正确

正确答案:B

第42题,C++语言类定义中默认的访问权限是public。

A、错误

B、正确

正确答案:A

第43题,在C++中,允许从一个类派生出任意多个类,但不允许某个类同时从多个类派生。

A、错误

B、正确

正确答案:A

第44题,对虚函数的调用,系统都是采用动态联编。

A、错误

B、正确

正确答案:A

第45题,在派生类对象销毁时,系统除了会自动调用派生类的析构函数,还会自动调用基类的析构函数。

A、错误

B、正确

正确答案:B

第46题,类中所提供的成员函数可以直接访问该类的私有成员。

A、错误

B、正确

正确答案:B

第47题,在C++程序中,有且仅能有一个主函数,且其函数名必须是main。

A、错误

B、正确

正确答案:B

第48题,私有继承中,对于基类中的所有成员,派生类的成员函数都不可直接访问。

A、错误

B、正确

正确答案:A

第49题,a为MyClass类对象,“static void SetRate(double r){...}”是MyClass类的静态成员函数,则执行语句“a.SetRate(0.05);”时,SetRate成员函数中的this指针指向对象a的地址。

A、错误

B、正确

正确答案:A

第50题,抽象类虽然也是一种数据类型,但它不能建立对象,只能作为基类被其他类继承。

A、错误

B、正确

正确答案:B

相关主题
相关文档
最新文档