南开大学22春学期《面向对象程序设计》在线作业答卷.docx
22春学期(高起本1709-1803、全层次1809-2103)面向对象程序设计在线作业-00003试卷总分:100得分:100一、单选题(共35道试题,共70分)1 .下列对派生类的描述中,()是错误的。A. 一个派生类可以作另一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,包含了它的基类的成员D.派生类中继承的基类成员的访问权限到派生类保持不变答案:D. 0是一个在基类中说明虚函数,它在该基类中没有定义,但要求任何派生类中的 可访问性的规定是相同的。A.纯虚函数B.虚析构函数C.虚构造函数0.静态成员函数答案:A.关于纯虚函数,下列表述正确的是()。A.纯虚函数是未给出实现版本(即无函数体定义)的虚函数B.纯虚函数的声明总是以“二0”结束C.派生类必须实现基类的纯虚函数D.含有纯虚函数的类一定是派生类答案:B.要求打开文件d:file.dat,可写入数据,正确的语句是()。A. ifstream infile(d:file,dat, ios:in);ifstream infile (z,d: file. dat/z, ios: : in);B. of stream infile (,zd: f ile. datz,, ios: :out);fstream infile (/?d: f ile. dat/,, ios: : in | ios: :out);答案:I).运行以下程序时,如果由键盘输入65 14,则输出结果是()。ttinclude <iostream> using name space std; int main () int m, n; cout<</zInput m, n:; cin>>m>>n; while(m!=n) while(m>n) m-=n; while(n>m) n-=m; cout<<m<<endl; return 0; 3A. 21B. 0答案:C 6.对A、B两个类进行多重继承得到派生类C,则创建派生类C的对象时,从基类B中继承过来的成员变量由()类的构造函数进行初始化。A. ABC.CD.都可以答案:B.在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继 承的规则0。A.完全相同.完全不同C.部分相同,部分不同D.以上都不对答案:A.在C+标准模板库中,vector容器是一种()。A.标准类.标准对象C.标准函数D.标准类模板答案:D一个()允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数 的参数和返回值可以取任意数据类型。A.函数模板B.模板函数C.类模板D.模板类答案:C.在C+中,打开一个文件就是将这个文件与一个()建立关联;关闭一个文件就是 取消这种关联。A.流B.类C.结构D.对象答案:A11 .关于纯虚函数和抽象类的描述中,错误的是()。A.纯虚函数是一种特殊的虚函数,它没有具体的实现。B.抽象类是指具有纯虚函数的类。C. 一个基类中有纯虚函数,该类的派生类一定不再是抽象类。D.抽象类作为基类来使用,其纯虚函数的实现由派生类给出。答案:C.对于拷贝构造函数,正确的描述是()。A.在C+语言中,如果不自定义类的拷贝构造函数,则每个类都有默认的拷贝构造 函数B.必须为每个类定义拷贝构造函数C.如果要使用拷贝构造函数,则必须在类中先定义D.当定义了类的构造函数时,如果要使用拷贝构造函数,则必须定义拷贝构造函 数答案:A.下面关于对象概念的描述中,()是错误的。A.对象就是C语言中的结构变量R.对象代表着正在创建的系统中的一个实体C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的答案:A.下列描述中,()是抽象类的特性。A.可以说明虚函数B.可以定义友元函数C.可以进行构造函数重载D.不能说明其对象答案:D.下列关于类的继承描述中,()是错误的。A.派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数B.派生类也是基类,但基类不一定具有派生类的全部属性和方法C.继承描述类的层次关系,派生类可以具有与基类相同的属性和方法一个基类可以有多个派生类,一个派生类可以有多个基类 答案:A16 .运算符delete删除一个动态对象时()。A.首先为该动态对象调用构造函数,再释放其占用的内存B.首先释放该动态对象占用的内存,再为其调用构造函数C.首先为该动态对象调用析构函数,再释放其占用的内存D.首先释放动态对象占用的内存,再为其调用析构函数答案:C.下列关于成员函数特征的描述中,错误的是()。A.成员函数可以重载B.成员函数一定是内联函数C.成员函数可以设置参数的默认值D.成员函数可以是静态的答案:B18.关于多继承二义性的描述中,错误的是()。A. 一个派生类的基类中都有某个同名成员,在派生类中对这个成员的访问可能出 现二义性B.解决二义性的最常用的方法是对成员名的限定法C.基类和派生类同时出现的同名函数,也存在二义性问题I). 一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对 该基类成员进行访问时,可能出现二义性答案:C19.类B是类A的公有派生类,类A和类B中都定义了虚函数func (), p是一个指向 类A对象的指针,则p->A:func()将()。A.调用类A中是函数func ()B.调用类B中是函数func()C.根据P所指的对象类型而确定调用A中或类B中的函数func ()D.既调用类A中函数,也调用类B中的函数答案:A.虚函数必须是类的()。A.友元函数B.成员函数C.构造函数D.析构函数答案:B.下面描述中,错误的是()。A.在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问B.在基类定义的public和protected成员在私有继承的派生类中可见,在类外可 以被访问C.在基类定义的public和protected成员在保护继承的派生类中可见D.在派生类中不可见的成员要变成可访问的,需要进行访问声明 答案:B20 .已知类X中的一个成员函数说明如下:Void Set(X &a);其中,X&a的含义是 ()。A. a是指向X类对象的指针,用来作为Set ()的形参B.将a的地址传递给Set ()函数C.a是X类对象的引用,用来做为Set ()的形参D.以上都不对答案:C.下列()是构造函数的特征。A.构造函数在创建对象时自动调用B.构造函数不可以重载C.构造函数不可以设置默认参数I).构造函数必须指定函数类型答案:A24.已知 “int a=10, *p; int *&r=p; r=&a;*p=20;couta; ",则输出为()。A. 1020C.不确定值D.程序有错误答案:B25.多态调用是指()。A.以任何方式调用一个虚函数B.以任何方式调用一个纯虚函数C.借助于指向对象的基类指针或引用调用一个虚函数D.借助于指向对象的基类指针或引用调用一个纯虚函数答案:C. 一个类的友元函数或友元类能够通过成员操作符访问该类的()。A.私有成员B.保护成员C.公有成员D.所有成员答案:D.下面关于友元的描述中,错误的是()。A.友元函数可以访问该类的私有数据成员B. 一个类的友元类中的成员函数都是这个类的友元函数C.友元可以提高程序的运行效率D.类与类之间的友元关系可以继承答案:D28.下列虚基类的声明中正确的是()。A. class virtual B:public Avirtual class B:publicC.class B:public A virtualD. class B: virtual public A答案:D29.声明一个类的对象时,系统自动调用()函数。A.成员函数B.构造函数C.析构函数D.普通函数答案:B30.类对象占用内存的大小与()有关。A.数据成员B.成员函数C.数据成员和成员函数I).私有成员答案:A.已知X类.则当程序执行到语句X *array3;时,调用了()次构造函数。A. 01B. 23答案:A.关于动态关联的下列叙述中,()是错误的。A.动态关联是以虚函数为基础的B.动态关联调用虚函数操作是指向对象的指针或引用C.动态关联是在运行时确定所调用的函数代码的D.动态关联是在编译时确定操作函数的答案:1).派生类的构造函数的成员初始化列表中,不能包含()。A.基类的构造函数B.派生类中子对象的初始化C.基类的子对象初始化D.派生类中一般数据成员的初始化答案:C.©+有()种联编方式。A. 12B. 34答案:B35.下面对析构函数的正确描述是()。A.系统不能提供默认的析构函数B.析构函数必须由用户定义C.析构函数没有参数D.析构函数可以设置默认参数答案:C二、判断题(共15道试题,共30分)36 .在类体中可以在声明成员变量的同时为其赋初值。答案:错误.面向对象程序设计方法中也会使用结构化程序设计方法。答案:正确.运算符口只能用成员运算符来重载,不能用友元运算符来重载。答案:正确. cin后面的符号是。答案:错误.在类内部定义的public数据可以在类外进行存取。答案:正确. 一个函数模板只生成一个模板函数。答案:错误. getlineO函数从流中提取终止字符,但终止字符被丢弃。答案:正确.抽象类虽然也是一种数据类型,但它不能建立对象,只能作为基类被其他类继 承。答案:正确.重载函数可以带默认参数值,但要注意二义性。答案:正确.重载的运算符保持原来的优先级和结合性以及操作数的个数。答案:正确. C+语言允许使用友元,但是友元会破坏封装性。答案:正确.类的私有成员只能被它的成员函数和友元函数访问。答案:正确.函数的定义不可以嵌套,类的定义可以嵌套。答案:正确. C+语言类定义中默认的访问权限是publico答案:错误.定义一个虚基类后,则该虚基类后继类层次中的类都需要调用虚基类的构造函 数对虚基类中定义的成员变量进行初始化。答案:正确