QQ:2548929010
南开大学《面向对象程序设计》在线作业

时间:2022/5/16点击: 615 次

[零零捌記]可做奥鹏院校所有作业、毕业论文。咨询请添加 微信:aopen008
 QQ:2548929010

22春学期(高起本1709-1803、全层次1809-2103)《面向对象程序设计》在线作业-00001

试卷总分100  得分100

一、单选题 (35 道试题,70 )

1.友元重载运算符obj1obj2C++编译器解释为()

A.operator(obj1,obj2)

B.(obj1,obj2)

C.obj1.operator(obj2)

D.obj2.operator(obj1)

 

2.对于类定义 class A{ public virtual void funcl(){} void func2(){} }; class Bpublic A{ public void func1(){coutclass B func1endl;} virtual void func2(){coutclass B func2endl;} };下面正确的叙述是( )

A.Afunc2()Bfunc1()都是虚函数

B.Afunc2()Bfunc1()都不是虚函数

C.Bfunc1()是虚函数,Afunc2()不是虚函数

D.Bfunc1()不是虚函数,Afunc2()是虚函数

 

3.read函数的功能是从输入流中读取( )

A.一个字符

B.当前字符

C.一行字符

D.指定若干个字符

 

4.运算符重载的目的是()

A.提高程序的效率

B.提高代码复用能力

C.简化程序,减少目标代码

D.使程序代码直观易读

 

5.下列对重载函数的描述中,( )是错误的。

A.重载函数中不允许使用默认参数

B.重载函数中编译时根据参数表进行选择

C.不要使用重载函数来描述毫无相干的函数

D.构造函数重载将会给初始化带来多种方式

 

6.关于下面程序段说法正确的是( ) class X { private int n; public X(X&); }; XX(X&x) {n=x.n} X obj1,obj2(obj1);

A.语句obj2(obj1);的功能是用对象obj1初始化具有相同类类型的对象obj2

B.语句obj2(obj1);的功能是用对象obj2初始化具有相同类类型的对象obj1

C.X(X&x)中的&符号可以删除

D.X(X&x)函数中不能访问对象的私有成员

 

7.设置虚基类的目的是()

A.简化程序

B.消除二义性

C.提高运行效率

D.减少目标代码

 

8.对于拷贝构造函数,正确的描述是()

A.C++语言中,如果不自定义类的拷贝构造函数,则每个类都有默认的拷贝构造函数

B.必须为每个类定义拷贝构造函数

C.如果要使用拷贝构造函数,则必须在类中先定义

D.当定义了类的构造函数时,如果要使用拷贝构造函数,则必须定义拷贝构造函数

 

9.下面关于构造函数和析构函数的描述,错误的是()

A.析构函数中调用虚函数采用静态联编

B.对虚析构函数的调用可以采用动态联编

C.当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数

D.构造函数可以声明为虚函数

 

10.多继承的构造函数顺序可分为如下4步: ①所有非虚基类的构造函数按照它们被继承的顺序构造。 ②所有虚基类的构造函数按照它们被继承的顺序构造。 ③所有子对象的构造函数按照它们声明的顺序构造。 ④派生类自己的构造函数体 这四个步骤的正确顺序是()

A.④③①②

B.②④③①

C.②①③④

D.③④①②

 

11.关于this指针的说法错误的是( )

A.this指针必须显示说明

B.当创建一个对象后,this指针就指向该对象

C.成员函数拥有this指针

D.静态成员函数不拥有this指针

 

12.有关析构函数的说法正确的是( )

A.析构函数可以有多个

B.析构函数和构造函数一样可以有形参

C.析构函数的功能是用来释放一个对象

D.析构函数的函数类型为void

 

13.一个( )允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数和返回值可以取任意数据类型。

A.函数模板

B.模板函数

C.类模板

D.模板类

 

14.下列关于成员访问权限的描述中,不正确的是( )

A.公有数据成员和公有成员函数都可以通过类对象直接访问

B.类的私有数据成员只能被公有成员函数以及该类的任何友元类或友元函数访问

C.保护成员在派生类中可以被访问,而私有成员不可以

D.类或派生类的成员函数可以访问保护成员

 

15.使用string类,必须在程序中包含头文件()

A.string.h

B.string

C.cstring.h

D.cstring

 

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

A.f(5)

B.f(5,8)

C.f(6, , '#')

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

 

17.派生类的构造函数的成员初始化列表中,不能包含()

A.基类的构造函数

B.派生类中子对象的初始化

C.基类的子对象初始化

D.派生类中一般数据成员的初始化

 

18.关于虚函数,下列表述正确的是( )

A.如果在重定义虚函数时使用virtual,则该重定义函数仍然是虚函数

B.虚函数不得声明为静态函数

C.虚函数不得声明为另一个类的友元函数

D.派生类必须重新定义基类的虚函数

 

19.在保护继承中,基类中的私有成员作为派生类的()

A.公有成员

B.私有成员

C.保护成员

D.不可访问

 

20.假定已定义浮点型变量data,以二进制方式把data的值写入输出文件流对象outfile中去,正确的语句是( )

A.outfile.write((float ) &data, sizeof(float));

B.outfile.write((float ) &data, data);

C.outfile.write((char ) &data, sizeof(float));

D.outfile.write((char ) &data, data);

 

21.下列引用的定义中,( )是错误的。

A.int i; int &j=i;

B.int i; int &j; j=i;

C.float i; float &j=i;

D.char d; char &k=d;

 

22.C++( )种联编方式。

A.1

B.2

C.3

D.4

 

23.C++标准模板库中,vector容器是一种( )

A.标准类

B.标准对象

C.标准函数

D.标准类模板

 

24.下列关于赋值运算符重载的说法中正确的是()

A.返回值一般是以引用方式返回的对象,而函数体中总是用语句“return this;”返回this指针所指向的对象

B.赋值运算符只能以非成员函数的方式重载

C.赋值运算符既可以以成员函数的方式重载,又可以以非成员函数的方式重载

D.以上均不正确

 

25.下列对派生类的描述中错误的是()

A.派生类至少有一个基类

B.派生类可作为另一个派生类的基类

C.派生类除了包含它直接定义的成员外,还包含其基类的成员

D.派生类对其继承的基类的成员访问权限保持不变

 

26.下列对派生类的描述中,()是错误的。

A.一个派生类可以作另一个派生类的基类

B.派生类至少有一个基类

C.派生类的成员除了它自己的成员外,包含了它的基类的成员

D.派生类中继承的基类成员的访问权限到派生类保持不变

 

27.面向对象程序设计思想的主要特征中不包括( )

A.封装性

B.多态性

C.继承性

D.功能分解,逐步求精

 

28.有关构造函数说法不正确的是( )

A.构造函数的名字和类的名字一样

B.在创建对象时,系统自动调用构造函数

C.构造函数无任何函数类型

D.构造函数有且只有一个

 

29.如果一个类至少有一个纯虚函数,那么就称该类是()

A.抽象类

B.虚基类

C.派生类

D.以上都不对

 

30.进行文件操作时需要包含_ ()头文件。

A.iostream

B.fstream

C.stdio

D.stdlib

 

31.已知AA是一个类,则执行语句AA a;( )

A.自动调用无参构造函数

B.自动调用有参构造函数

C.自动调用拷贝构造函数

D.产生一个对象a,但不调用任何函数

 

32.类模板的使用实际上是类模板实例化成一个具体的( )

A.

B.对象

C.函数

D.变量

 

33.下列描述中,()是抽象类的特性。

A.可以说明虚函数

B.可以定义友元函数

C.可以进行构造函数重载

D.不能说明其对象

 

34.C++C语言做了很多改进,下列描述中( )使得C语言发生了质变,即从面向过程变成面向对象。

A.增加了一些新的运算符

B.允许函数重载,并允许设置默认参数

C.规定函数说明必须用原型

D.引进类和对象的概念

 

35.有关带默认参数的函数的描述正确的是()

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

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

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

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

 

二、判断题 (15 道试题,30 )

36.默认形参值应在函数定义处指定。

 

37.类的静态成员函数中不能访问非静态成员。

 

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

 

39.多继承情况下,派生类的构造函数中基类构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。

 

40.在删除一个动态对象时,将自动调用该动态对象所属类的析构函数。

 

41.构造函数和析构函数都不能重载。

 

42.定义模板的关键字是template

 

43.预定义的提取符和插入符是可以重载的。

 

44.派生类对基类继承的成员函数进行重定义后,则通过派生类对象和基类对象调用的都是重定义后的成员函数。

 

45.引用是某个变量的别名。对引用的操作,实质上就是对被引用的变量的操作。

 

46.C++语言中模板分为函数模板和类模板两种。

 

47.cin后面的符号是。

 

48.运算符重载是一种特殊的函数重载,其函数名为operator

 

49.函数模板可以与普通函数重载。

 

50.多重继承中的二义性问题是由于一个派生类从不同基类中继承了同名成员变量或相同函数原型的成员函数。


在线作业 离线作业 论文咨询 在线考试 旺旺客服 微信二维码