最新消息:可做奥鹏等各院校作业论文,答案请联系QQ/微信:18866732

南开《面向对象程序设计》20春期末考核【标准答案】

《面向对象程序设计》20春期末考核-00001

试卷总分:100  得分:70

一、单选题 (共 30 道试题,共 30 分)

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

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

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

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

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

 

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

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

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

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

D.以上均不正确

 

3.对于下面定义的类A在函数f()中将对象成员n的值修改为60的语句应该是( ) class A { public: A(int x){n=x;} void SetNum(int n1){n=n1;} private: int n; } int f() { A*ptr=new A(6); }

A.A(60)

B.SetNum(60)

C.ptr->SetNum(60)

D.ptr->n=60

 

4.下面叙述错误的是( )。

A.派生类可以使用private派生

B.对基类成员的访问必须是无二义性的

C.基类成员的访问能力在派生类中维持不变

D.赋值兼容规则也适用于多继承的组合

 

5.抽象类的作用主要是()。

A.直接用作基类

B.直接用作指针

C.引用的基类型

D.包括以上各项

 

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

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

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

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

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

 

7.假定X为一个类,执行X a[3],*p[2];语句时会自动调用该类的构造函数( )次。

A.2

B.3

C.4

D.5

 

8.在一个C++源文件中使用了cin和cout,那么在这个源文件中必须包含()文件。

A.iostream

B.fstream

C.stdio.h

D.stdlib.h

 

9.下列虚基类的声明中正确的是( )。

A.class virtual B:public A

B.virtual class B:public

C.class B:public A virtual

D.class B: virtual public A

 

10.空类的声明( )是正确的。

A.class类名;

B.class类名{};

C.class类名{}

D.class类名

 

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

A.成员函数可以重载

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

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

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

 

12.友元重载运算符obj1>obj2被C++编译器解释为()。

A.operator>(obj1,obj2)

B.>(obj1,obj2)

C.obj1.operator>(obj2)

D.obj2.operator>(obj1)

 

13.在C++中,能被派生类继承的函数是( )。

A.成员函数

B.构造函数

C.析构函数

D.拷贝构造函数

 

14.多态调用是指( )。

A.以任何方式调用一个虚函数

B.以任何方式调用一个纯虚函数

C.借助于指向对象的基类指针或引用调用一个虚函数

D.借助于指向对象的基类指针或引用调用一个纯虚函数

 

15.一个类的友元函数或友元类能够通过成员操作符访问该类的()。

A.私有成员

B.保护成员

C.公有成员

D.所有成员

 

16.继承具有(),即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。

A.规律性

B.传递性

C.重复性

D.多样性

 

17.在下列选项中( )不是ostream类的对象。

A.cin

B.cerr

C.clog

D.cout

 

18.若析构函数是虚函数,则delete对析构函数的调用采用( )。

A.静态联编

B.动态联编

C.重载函数

D.多重函数

 

19.下列表示引用的方法中,( )是正确的。 已知:int k=1000;

A.int &x=k;

B.char &y;

C.int &z=1000;

D.float &t=&k;

 

20.要求打开文件 d:\file.dat,可写入数据,正确的语句是( )。

A.ifstream infile(“d:\file.dat”, ios::in);

B.ifstream infile(“d:\\file.dat”, ios::in);

C.ofstream infile(“d:\file.dat”, ios::out);

D.fstream infile(“d:\\file.dat”, ios::in| ios::out);

 

21.在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则()。

A.完全相同

B.完全不同

C.部分相同,部分不同

D.以上都不对

 

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

A.封装性

B.多态性

C.继承性

D.功能分解,逐步求精

 

23.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。

A.ios::in

B.ios::out

C.ios::trunk

D.ios::binary

 

24.假定已定义浮点型变量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);

 

25.下列关于主函数的叙述中正确的是()。

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

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

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

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

 

26.下列类中( )是输入/输出流类iostream的派生类。

A.fstream

B.ofstream

C.ifstream

D.ostream

 

27.类MyClass的定义如下: class MyClass { public: MyClass() { value = 0;} SetVariable(int i) { value = i; } private: int value; } 则对下列语句序列正确的描述是()。 MyClass *p,my; p=&my;

A.语句p=&my;是把对象my赋值给指针变量p

B.语句MyClass *p,my;会调用两次类MyClass的构造函数

C.对语句 *p.SetVariable(5)的调用是正确的

D.语句p->SetVariable(5)与语句my.SetVariable(5)等价

 

28.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p->A::func()将( )。

A.调用类A中是函数func()

B.调用类B中是函数func()

C.根据P所指的对象类型而确定调用A中或类B中的函数func()

D.既调用类A中函数,也调用类B中的函数

 

29.下列关于虚函数的说明中,正确的是()。

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

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

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

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

 

30.虚函数必须是类的()。

A.友元函数

B.成员函数

C.构造函数

D.析构函数

 

二、多选题 (共 15 道试题,共 30 分)

31.下列关于函数模板的描述中,正确的是( )。

A.函数模板和普通函数重载时,函数调用会优先调用符合要求的普通函数

B.函数模板和普通函数重载时,函数调用会优先调用符合要求的函数模板

C.函数模板的主要作用是减少可执行程序文件的尺寸

D.函数模板的主要作用是简化程序编写

 

32.下列( )是构造函数的特征。

A.构造函数在创建对象时自动调用

B.构造函数不可以重载

C.构造函数不可以设置默认参数

D.构造函数没有函数类型

 

33.基类中的公有成员可能是派生类的( )。

A.public成员

B.private成员

C.protected成员

D.友元成员

 

34.下面描述中,错误的是( )。

A.虚函数是没有实现的函数

B.纯虚函数是没有实现的函数

C.抽象类可以用于创建对象

D.抽象类指针可以指向不同的派生类

 

35.基类中的保护成员可能是派生类的( )。

A.public成员

B.private成员

C.protected成员

D.友元成员

 

36.下列关于类的常量成员函数的说法中,正确的是( )。

A.只有类的成员函数可以在函数头后面加const关键字

B.在常量成员函数中可以获取成员变量的值、但不能修改

C.在常量成员函数中只能访问常量数据成员

D.在类体外定义常量成员函数时,函数头后面的const关键字可以省略

 

37.下面描述中,正确的是( )。

A.多重继承中,派生类对象被销毁时析构函数的调用顺序与派生类对象创建时构造函数的调用顺序相反

B.多重继承中,派生类对象被销毁时析构函数的调用顺序与派生类对象创建时构造函数的调用顺序一致

C.多重继承中创建派生类对象时各基类构造函数的调用顺序与基类构造函数在初始化列表中的出现顺序一致

D.多重继承中,如果派生类的初始化列表中没有某个基类构造函数的调用语句,则表示调用该基类的无参构造函数

 

38.下列描述正确的是( )。

A.使用基类指针释放其所指向的派生类对象时,必须将析构函数声明为虚函数

B.为了减少错误,在定义类时最好将每个类的析构函数都声明为虚函数

C.当类里包含一个虚函数时,应把析构函数也声明为虚函数

D.类中包含虚函数会增加对象的尺寸

 

39.下列关于拷贝构造函数的说法中,正确的是( )。

A.拷贝构造函数是一个特殊的构造函数

B.一个类中只能有一个拷贝构造函数

C.如果定义一个类时没有定义拷贝构造函数,则系统会提供一个默认的不包含任何操作的拷贝构造函数

D.当一个类中有指针类型的成员变量时,则需要为这个类定义拷贝构造函数

 

40.类成员的访问控制方式包括( )。

A.public

B.private

C.protected

D.friend

 

41.下列描述中,正确的是( )。

A.派生类构造函数主要是对派生类新定义的成员变量进行初始化

B.派生类从基类继承的成员变量的初始化通过基类构造函数完成

C.派生类对象被销毁时会先调用基类析构函数

D.派生类对象被销毁时会先调用派生类析构函数

 

42.已知有vector v(10);,则下列选项中,能将v中第1个元素的值赋为3(不添加新元素)的语句有( )。

A.v[0]=3;

B.vector::iterator it=v.begin();*it=3;

C.v.insert(0,3);

D.v.insert(v.begin(),3);

 

43.关于this指针的说法正确的是( )。

A.this指针必须显示说明

B.成员函数不拥有this指针

C.成员函数拥有this指针

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

 

44.已知:const double PI=3.14;则以下语句中正确的是( )。

A.double a=2*PI;

B.PI=3.14159;

C.cin>>PI;

D.cout<<PI;

 

45.输出流类对象包括( )。

A.cin

B.cerr

C.clog

D.cout

 

三、判断题 (共 10 道试题,共 10 分)

46.在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。

 

47.打开ASCII码流文件和二进制流文件时,打开方式是相同的。

 

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

 

49.类的常量成员函数中只能使用常量数据成员。

 

50.程序设计过程是指编写程序的过程。

 

51.使用关键字class定义的类中默认的访问权限是私有(private)的。

 

52.类非成员函数形式的运算符重载函数通常采用友元函数,是为了在运算符重载中方便访问类中的非公有成员。

 

53.在面向对象程序设计中,每个对象可以单独设置属性值。

 

54.在保护派生中,基类权限为private的成员在派生类中权限也为private。

 

55.假定AB为一个类,有类AB的两个对象a1,a2;则执行语句AB *a[10]={&a1,&a2};时系统自动调用该类的构造函数的次数为2。

 

四、问答题 (共 5 道试题,共 30 分)

56.ARRAY类的定义如下,构造函数把参数n的值赋给s,给v动态分配长度为n的数组空间,然后利用数组参数a初始化v所指向的数组。请将类定义补充完整。

 

{图}

 

57.将下列程序填写完整。

{图}

{图}

 

58.编写程序,实现Time类,在Time类中设计重载运算符函数使得如下运算成立:

Time t(23, 59, 59);

(t+1).Display(); // 输出0:0:0

t.Display(); // 输出23:59:59

 

59.写出下面程序的运行结果。

{图}

{图}

 

60.编写程序,实现一个学生类Student,包括姓名和三门课程成绩,利用重载运算符“<”比较两名学生的总成绩。然后定义一批学生,按总成绩升序排序,并输出结果。要求用友元重载函数实现。

转载请注明:奥鹏作业之家 » 南开《面向对象程序设计》20春期末考核【标准答案】

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址