20春学期(1709、1803、1809、1903、1909、2003)《面向对象程序设计》在线作业答案

上传人:范老****导 文档编号:129144501 上传时间:2020-04-22 格式:DOC 页数:15 大小:35.50KB
返回 下载 相关 举报
20春学期(1709、1803、1809、1903、1909、2003)《面向对象程序设计》在线作业答案_第1页
第1页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《20春学期(1709、1803、1809、1903、1909、2003)《面向对象程序设计》在线作业答案》由会员分享,可在线阅读,更多相关《20春学期(1709、1803、1809、1903、1909、2003)《面向对象程序设计》在线作业答案(15页珍藏版)》请在金锄头文库上搜索。

1、20春学期(1709、1803、1809、1903、1909、2003)面向对象程序设计在线作业试卷总分:100 得分:100一、单选题 (共 35 道试题,共 70 分)1.在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则()。A.部分相同,部分不同B.完全相同C.完全不同D.以上都不对答案:B2.下面( )的叙述不符合赋值兼容规则。A.派生类的对象可以赋值给基类的对象B.基类的对象可以赋值给派生类的对象C.派生类的对象可以初始化基类的对象D.派生类的对象的地址可以赋值给指向基类的指针答案:B3.下列函数中,可以作为虚函数的是( )。A.静态成员函数B.析构函数C

2、.构造函数D.普通函数答案:B4.“#include ”是()预处理命令。A.条件编译B.文件包含C.工程配置D.宏定义答案:B5.下面对析构函数的正确描述是( )。A.系统不能提供默认的析构函数B.析构函数没有参数C.析构函数必须由用户定义D.析构函数可以设置默认参数答案:B6.实现运行时的多态性要使用()。A.构造函数B.析构函数C.重载函数D.虚函数答案:D7.下面程序段中,说法正确的是( ) class location public : int GetX(); ; class rectangle:private location public: int GetW(); ;A.类rec

3、tangle的私有派生类是locationB.类rectangle中的public成员在类 location中是私有的C.类location中的public成员在类 rectangle中是不可访问的D.viod f( ) Rectangle r; int X=r .GetX( ); 其中int X = r .GetX( );是非法语句答案:D8.缺省析构函数的函数体是( )。A.随机产生的B.空的C.无法确定的D.不存在答案:B9.关于纯虚函数,下列表述正确的是( )。A.纯虚函数的声明总是以“=0”结束B.纯虚函数是未给出实现版本(即无函数体定义)的虚函数C.派生类必须实现基类的纯虚函数D.

4、含有纯虚函数的类一定是派生类答案:A10.下面描述中,错误的是()。A.私有继承时,基类中的public成员在派生类中是private的B.公有继承时,基类中的public成员在派生类中仍是public的C.公有继承时,基类中的protected成员在派生类中仍是protected的D.公有继承时,基类中的private成员在派生类中仍是private的答案:D11.下面对构造函数的不正确描述是( )。A.系统可以提供默认的构造函数B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数可以有参数,所以可以有返回值答案:D12.假定已定义浮点型变量data,以二进制方式把data的值写入输

5、出文件流对象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);答案:C13.有如下类声明: class Sample int x; ; 则Sample类成员x是Sample类的()。A.公有数据成员B.保护数据成员C.私有数据成员D.以上选项都不正确答案:C14.一个( )允许

6、用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数和返回值可以取任意数据类型。A.类模板B.模板类C.模板函数D.函数模板答案:A15.将一个string类对象赋予新值,应该使用string类的()函数。A.swapB.insertC.findD.assign答案:D16.下列运算符中,()在C+中不能重载。A.?:B.=C.-D.+答案:A17.有关带默认参数的函数的描述正确的是()。A.设置默认参数时,应该设置最右边的若干个参数的默认值B.只能在函数定义时设置默认参数值C.只能在函数声明时设置默认参数值D.函数调用时,必须使用默认的参数值,不能给出新的实参值答案:A18.在表

7、达式x+y*z中,+ 是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是()。A.operator+有两个参数,operator*有两个参数B.operator+有两个参数,operator*有一个参数C.operator+有一个参数,operator*有两个参数D.operator+有一个参数,operator*有一个参数答案:C19.下列关于C+类的描述中错误的是( )。A.类用于描述事物的属性和对事物的操作B.类与类之间必须是平等的关系,而不能组成层次关系C.类与类之间可以通过封装而具有明确的独立性D.类与类之间可以通过一些手段进行通信和联络答案:B20.有关

8、类和对象的说法不正确的是( )。A.类与对象的关系和数据类型和变量的关系相似B.对象是类的一个实例C.任何一个对象只能属于一个具体的类D.一个类只能有一个对象答案:D21.执行语句“string str(abc);”时,系统会自动调用string类的构造函数()。A.string(size_type n, char c)B.string(const string &str)C.string(const char *s)D.string()答案:C22.假设A为抽象类,下列语句( )是正确的。A.int fun(A);B.A *p;C.A fun(int);D.A Obj;答案:B23.运算符重

9、载的目的是()。A.简化程序,减少目标代码B.提高程序的效率C.提高代码复用能力D.使程序代码直观易读答案:D24.下列关于构造函数的描述中,错误的是( )。A.构造函数在说明类变量时自动执行B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数可以对静态数据成员进行初始化答案:D25.若类中有指针成员变量,则应编写(),使得在对象销毁时能够自动调用该函数释放指针成员变量所指向的内存空间。A.虚函数B.析构函数C.构造函数D.友元函数答案:B26.下面对静态数据成员的描述中,正确的是( )。A.静态数据成员是类的所有对象共享的数据B.类的每个对象都有自己的静态数据成员C.类的不同对象有不

10、同的静态数据成员值D.静态数据成员不能通过类的对象访问答案:A27.下面函数原型声明中,( )声明了fun为纯虚函数。A.void fun()=0;B.virtual void fun();C.virtual void fun()=0;D.virtual void fun();答案:C28.假定X为一个类,执行X a3,*p2;语句时会自动调用该类的构造函数( )次。A.2B.3C.4D.5答案:B29.下列( )是构造函数的特征。A.构造函数必须指定函数类型B.构造函数在创建对象时自动调用C.构造函数不可以重载D.构造函数不可以设置默认参数答案:B30.假设堆内存分配均成功,则下面程序段完全

11、正确的是()。A.以上程序段均正确B.int *p=new int5;for(int i=0;i5;i+,p+) *p=i; cout*p;delete p;C.int *p=new int5=1,2,3,4,5;for(int i=0;i5;i+)coutpi;delete p;D.int *p=new int(3);cout*p;delete p;答案:D31.下列对派生类的描述中,()是错误的。A.派生类至少有一个基类B.派生类的成员除了它自己的成员外,包含了它的基类的成员C.派生类中继承的基类成员的访问权限到派生类保持不变D.一个派生类可以作另一个派生类的基类答案:C32.下列关于构造

12、函数说法不正确的是()。A.构造函数必须有返回值B.构造函数必须与类同名C.构造函数可以省略不写D.在构造函数中可以对类中的成员进行初始化答案:A33.下列关于运算符重载的描述中,()是正确的。A.运算符重载可以改变结合性B.运算符重载可以改变操作数的个数C.运算符重载可以改变优先级D.运算符重载不可以改变语法结构答案:D34.下面程序段中是内联函数的是( )。 class location private: int x ,y; public: void init(int initx,int inity) x=initx; y=inity; int getx()return x; int ge

13、ty(); ; inline int location:gety() return y;A.init (int initx,int inity)B.getx(),gety()C.A和getx()D.A和B都是答案:D35.已知“float *p; p=new float2;”,若要释放p所指向的堆中的这些字节,下列语句正确的是()。A.delete p;B.delete p2;C.delete p;D.delete p;答案:D二、判断题 (共 15 道试题,共 30 分)36.通过指针或引用可以调用不同对象相同名称的函数,但可导致完全不同的行为的现象称为二义性。答案:错误37.一个算法必须能

14、在有限步骤内解决问题。答案:正确38.可以在类的构造函数中对静态数据成员进行初始化。答案:错误39.多数运算符可以重载,个别运算符不能,运算符重载是通过函数定义实现的。答案:正确40.运算符只能用成员运算符来重载,不能用友元运算符来重载。答案:正确41.C+语言类定义中默认的访问权限是public。答案:错误42.C+中用户定义的标识符可以与系统关键字同名。答案:错误43.所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。答案:正确44.在C+程序中,有且仅能有一个主函数,且其函数名必须是main。答案:正确45.设要把一个文件输出流对象myFile与文件“f:myText.txt”相关联,所用的C+语句是ifstream myFile(f:myText.txt,ios:in|ios:out);答案:错误46.C+基类中,不能被派生类继承的有构造函数和析构函数。答案:正确47.在C+中,允许从一个类派生出

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号