版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z.目录一、单项选择题1二、判断题12三、填空题13四、程序填充19五、读程序写出运行结果32六、指出以下程序或函数的功能44七、程序改错46八、程序设计52"面向对象程序设计"答案62一、单项选择题1.C++源程序文件的缺省扩展名为(A)。A.cppB.e*eC.objD.lik2.由C++源程序文件编译而成的目标文件的缺省扩展名为(C)。A.cppB.e*eC.objD.lik3.由C++目标文件连接而成的可执行文件的缺省扩展名为(B)。A.cppB.e*eC.objD.lik4.编写C++程序一般需经过的几个步骤依次是(B)。A.编译、编辑、连接、调试B.编辑、编译、连接、调试C.编译、调试、编辑、连接D.编辑、调试、编辑、连接6.能作为C++程序的根本单位是(C)。A.字符B.语句C.函数D.源程序文件8.C++程序的根本模块为〔D〕。A.表达式B.标识符C.语句D.函数10.存储以下数据,占用存储字节最多的是〔D〕。A.0B.‘0’C.“0〞D.0.038.以下说法中正确的选项是〔B〕。A.C++程序总是从第一个定义的函数开场执行B.C++程序总是从main函数开场执行C.C++函数必须有返回值,否则不能使用函数D.C++程序中有调用关系的所有函数必须放在同一个程序文件中40.函数重载是指〔A〕。A.两个或两个以上的函数取一样的函数名,但形参的个数或类型不同B.两个以上的函数取一样的名字和具有一样的参数个数,但形参的类型可以不同C.两个以上的函数名字不同,但形参的个数或类型一样D.两个以上的函数取一样的函数名,并且函数的返回类型一样41.以下关于函数模板表达正确的选项是〔C〕。A.函数模板也是一个具体类型的函数B.函数模板的类型参数与函数的参数是同一个概念C.通过使用不同的类型参数,函数模板可以生成不同类型的函数D.用函数模板定义的函数没有类型42.以下〔C〕的调用方式是引用调用。A.形参和实参都是变量B.形参是指针,实参是地址值C.形参是引用,实参是变量D.形参是变量,实参是地址值43.为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择〔A〕。A.联函数B.重载函数C.递归函数D.函数模板55.以下正确的描述是〔C〕。A.不允许设置参数的默认值B.设置参数的默认值只能在定义函数时设置C.设置参数的默认值时,应该设置右边的参数D.设置参数的默认值时,应该全部参数都设置56.采用重载函数的目的是〔D〕。A.实现共享B.减少空间C.提高速度D.使用方便,提高可读性59.下面的标识符中,(C)是文件级作用域。A.函数形参B.语句标号C.外部静态类标识符D.自动类标识符60.以下表达不正确的选项是(D)。A.宏替换不占用运行时间B.宏名无类型C.宏替换只是字符替换D.宏名必须用大写字母表示61.C++语言的编译系统对宏命令的处理是(D)。A.在程序运行时进展B.在程序连接时进展C.和C++程序的其它语句同时进展编译D.在对源程序中其它成分正式编译之前进展62.当*include后面的文件名用双引号括起来时,寻找被包含文件的方式是(B)。A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D.搜索当前逻辑盘上的所有目录63.当*include后面的文件名用尖括号括起来时,寻找被包含文件的方式是(A)。A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D.搜索当前逻辑盘上的所有目录67.文件包含命令中被包含的文件的扩展名〔C〕。A.必须是.hB.不能是.hC.可以是.h或.cppD.必须是.cpp70.用new运算符创立一个含10个元素的一维整型数组的正确语句是(C)。A.int*p=newa[10];B.int*p=newfloat[10];C.int*p=newint[10];D.int*p=newint[10]={1,2,3,4,5}80.假定p指向的字符串为〞string〞,则cout<<p+3的输出结果为〔C〕。A.stringB.ringC.ingD.i81.假定p指向的字符串为〞string〞,假设要输出这个字符串的地址值,则使用〔D〕。A.cout<<*s;B.cout<<s;C.cout<<&s;D.cout<<(void*)s;82.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为〔A〕。A.int*p=newint[30];B.int*p=newint(30);C.int*p=new[30];D.*p=newint[30];83.假定p是具有int**类型的指针变量,则给p赋值的正确语句为〔B〕。A.p=newint;B.p=newint*;C.p=newint**;D.p=newint[10];84.要使语句“p=newint[10][20];〞能够正常执行,p应被事先定义为〔D〕。A.int*p;B.int**p;C.int*p[20];D.int(*p)[20];85.假定有“structBOOK{chartitle[40];floatprice;};BOOK*book=newBOOK;〞,则正确的语句为〔A〕。A.strcpy(book->title,〞WangTao〞);B.strcpy(book.title,〞WangTao〞);C.strcpy(*book.title,〞WangTao〞);D.strcpy((*book)->title,〞WangTao〞);86.假定有“structBOOK{chartitle[40];floatprice;};BOOK*book;〞,则不正确的语句为〔A〕。A.BOOK**=newbook;B.BOOK*={"C++Programming",27.0};C.BOOK**=newBOOK;D.BOOK**=book;87.假定有“structBOOK{chartitle[40];floatprice;}book;〞,则正确的语句为〔B〕。A.BOOK&*=&book;B.BOOK&*=book;C.BOOK&*=newBOOK;D.BOOK&*=BOOK;88.以下对引用的述中不正确的选项是〔C〕。A.每一个引用都是其所引用对象的别名,因此必须初始化B.形式上针对引用的操作实际上作用于它所引用的对象C.一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进展D.不需要单独为引用分配存储空间91.假定指针变量p定义为“int*p=newint(100);〞,要释放p所指向的动态存,应使用语句〔A〕。A.deletep;B.delete*p;C.delete&p;D.delete[]p;92.假定指针变量p定义为“int*p=newint[30];〞,要释放p所指向的动态存,应使用语句〔D〕。A.deletep;B.delete*p;C.delete&p;D.delete[]p;93.假定变量*定义为“int*=5;〞,要使r*成为*的引用〔别名〕,r*应定义为〔D〕。A.intr*=*;B.intr*=&*;C.int*r*=&*;D.int&r*=*;94.关于消息,以下说法中不正确的选项是〔B〕。A.发送消息的对象请求效劳,承受消息的对象提供效劳B.消息的发送者必须了解消息的接收者如何相应消息C.在C++中,消息的发送具体表达为对接收消息的对象的*个函数的调用D.每个对象只能接收*些特定格式的消息95.关于封装,以下说法中不正确的选项是〔D〕。A.通过封装,对象的全部属性和操作结合在一起,形成一个整体B.通过封装,一个对象的实现细节被尽可能地隐藏起来〔不可见〕C.通过封装,每个对象都成为相对独立的实体D.通过封装,对象的属性都是不可见的96.面向对象方法的多态性是指〔C〕。A.一个类可以派生出多个特殊类B.一个对象在不同的运行环境中可以有不同的变体C.针对一消息,不同的对象可以以适合自身的方式加以响应D.一个对象可以是由多个其他对象组合而成的97.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或缺乏时进展相应的软件更新的难易程度叫做软件的〔A〕。A.可维护性B.可复用性C.兼容性D.正确性98.软件产品可被全部或局部地再用于新的应用的能力叫做软件的〔B〕。A.可维护性B.可复用性C.兼容性D.正确性99.软件产品与其他软件产品组合成一个整体的难易程度叫做软件的〔C〕。A.可维护性B.可复用性C.兼容性D.正确性100.软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的〔D〕。A.可维护性B.可复用性C.兼容性D.正确性101.面向对象软件开发中使用的OOA表示〔A〕。A.面向对象分析B.面向对象设计C.面向对象语言D.面向对象方法102.面向对象软件开发中使用的OOD表示〔B〕。A.面向对象分析B.面向对象设计C.面向对象语言D.面向对象方法103.关于面向对象系统分析,以下说法中不正确的选项是〔B〕。A.术语“面向对象分析〞可以用缩写OOA表示B.面向对象分析阶段对问题域的描述比实现阶段更详细C.面向对象分析包括问题域分析和应用分析两个步骤D.面向对象分析需要识别对象的部和外部特征104.在一个类的定义中,包含有〔C〕成员的定义。A.数据B.函数C.数据和函数D.数据或函数105.在类作用域中能够通过直接使用该类的〔D〕成员名进展访问。A.私有B.公用C.保护D.任何106.在关键字public后面定义的成员为类的〔B〕成员。A.私有B.公用C.保护D.任何107.在关键字private后面定义的成员为类的〔A〕成员。A.私有B.公用C.保护D.任何108.假定AA为一个类,a为该类公有的数据成员,*为该类的一个对象,则访问*对象中数据成员a的格式为〔D〕。A.*(a)B.*[a]C.*->aD.*.a109.假定AA为一个类,a()为该类公有的函数成员,*为该类的一个对象,则访问*对象中函数成员a()的格式为〔B〕。A.*.aB.*.a()C.*->aD.*->a()110.假定AA为一个类,a为该类公有的数据成员,p*为指向该类对象的一个指针,则访问p*所指对象中数据成员a的格式为〔C〕。A.p*(a)B.p*[a]C.p*->aD.p*.a111.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,*为该类的一个对象,则访问*对象中数据成员a的格式为〔D〕。A.*.aB.*.a()C.*->GetValue()D.*.GetValue()112.假定AA为一个类,inta()为该类的一个成员函数,假设该成员函数在类定义体外定义,则函数头为〔A〕。A.intAA::a()B.intAA:a()C.AA::a()D.AA::inta()113.假定AA为一个类,a为该类公有的数据成员,假设要在该类的一个成员函数中访问它,则书写格式为〔A〕。A.aB.AA::aC.a()D.AA::a()114.假设需要把一个类外定义的成员函数指明为联函数,则必须把关键字〔B〕放在函数原型或函数头的前面。A.inB.inlineC.inLineD.InLiner115.在多文件构造的程序中,通常把类的定义单独存放于〔D〕中。A.主文件B.实现文件C.库文件D.头文件116.在多文件构造的程序中,通常把类中所有非联函数的定义单独存放于〔B〕中。A.主文件B.实现文件C.库文件D.头文件117.在多文件构造的程序中,通常把含有main()函数的文件称为〔A〕。A.主文件B.实现文件C.程序文件D.头文件118.一个C++程序文件的扩展名为〔C〕。A..hB..cC..cppD..cp119.在C++程序中使用的cin标识符是系统类库中定义的〔A〕类中的一个对象。A.istreamB.ostreamC.iostreamD.fstream120.在C++程序中使用的cout标识符是系统类库中定义的〔B〕类中的一个对象。A.istreamB.ostreamC.iostreamD.fstream121.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为〔D〕。A.intB.charC.AAD.AA*122.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为〔C〕。A.abcB.*thisC.thisD.this&123.假定AA是一个类,“AA&abc();〞是该类中一个成员函数的原型,假设该函数存在对*this赋值的语句,当用*.abc()调用该成员函数后,*的值〔A〕。A.已经被改变B.可能被改变C.不变D.不受函数调用的影响124.假定AA是一个类,“AA*abc()const;〞是该类中一个成员函数的原型,假设该函数返回this值,当用*.abc()调用该成员函数后,*的值〔C〕。A.已经被改变B.可能被改变C.不变D.受到函数调用的影响125.类中定义的成员默认为〔B〕访问属性。A.publicB.privateC.protectedD.friend126.构造中定义的成员默认为〔A〕访问属性。A.publicB.privateC.protectedD.friend127.当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为(C)。A.nB.n+1C.n-1128.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾〔即最后一个〕元素的位置为(C)。A.length+1B.first+lengthC.(first+length-1)%MSD.(first+length)%MS129.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾的后一个位置为(D)。A.length+1B.first+lengthC.(first+length-1)%MSD.(first+length)%MS130.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队首的后一个位置为(B)。A.first+1B.(first+1)%MSC.(first-1)%MSD.(first+length)%MS131.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用ne*t表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,假设链队非空,则进展插入时必须把新结点的地址赋给(D)。A.elemHeadB.elemTailC.elemHead->ne*t和elemHeadD.elemTail->ne*t和elemTail132.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用ne*t表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,假设链队为空,则进展插入时必须把新结点的地址赋给(C)。A.elemHeadB.elemTailC.elemHead和elemTailD.elemHead或elemTail133.队列具有〔A〕的操作特性。A.先进先出B.先进后出C.进出无序D.进出任意134.栈具有〔B〕的操作特性。A.先进先出B.先进后出C.进出无序D.进出任意135.对于一个类的构造函数,其函数名与类名(A)。A.完全一样B.根本一样C.不一样D.无关系136.对于一个类的析构函数,其函数名与类名(C)。A.完全一样B.完全不同C.只相差一个字符D.无关系137.类的构造函数是在定义该类的一个(C)时被自动调用执行的。A.成员函数B.数据成员C.对象D.友元函数138.类的析构函数是一个对象被(B)时自动调用的。A.建立B.撤消C.赋值D.引用139.一个类的构造函数通常被定义为该类的(A)成员。A.公用B.保护C.私有D.友元140.一个类的析构函数通常被定义为该类的(C)成员。A.私有B.保护C.公用D.友元141.假定AB为一个类,则执行“AB*;〞语句时将自动调用该类的(B)。A.带参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数142.假定AB为一个类,则执行“AB*(a,5);〞语句时将自动调用该类的(A)。A.带参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数143.假定AB为一个类,则执行“AB*s=newAB(a,5);〞语句时得到的一个动态对象为(D)。A.sB.s->aC.s.aD.*s144.假定AB为一个类,则执行“ABr1=r2;〞语句时将自动调用该类的(D)。A.无参构造函数B.带参构造函数C.赋值重载函数D.拷贝构造函数145.假设需要使类中的一个指针成员指向一块动态存储空间,则通常在(B)函数中完成。A.析构B.构造C.任一成员D.友元146.当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储(A)个整数。A.nB.n+1C.n-1D.1147.假定一个类的构造函数为“A(intaa,intbb){a=aa;b=aa*bb;}〞,则执行“A*(4,5);〞语句后,*.a和*.b的值分别为(C)。A.4和5B.5和4C.4和20148.假定一个类的构造函数为“A(intaa=1,intbb=0){a=aa;b=bb;}〞,则执行“A*(4);〞语句后,*.a和*.b的值分别为(D)。A.1和0B.1和4C.4和1D.4和0149.假定AB为一个类,则(B)为该类的拷贝构造函数的原型说明。A.AB(AB*);B.AB(AB&*);C.voidAB(AB&*);D.AB(int*);150.假定一个类的构造函数为“B(inta*,intb*):a(a*),b(b*){}〞,执行“B*(1,2),y(3,4);*=y;〞语句序列后*.a的值为(C)。A.1B.2C.3151.假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为(D)。A.AB(){a=0;}B.AB(intaa=0):a(aa){}C.AB(intaa):a(aa){}D.AB(){}152.假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为(C)。A.AB(){}B.AB():a(0){}C.AB(intaa=0){a=aa;}D.AB(intaa){}153.对于任一个类,用户所能定义的构造函数的个数至多为(D)。A.0B.1C.2D.任意个154.对于任一个类,用户所能定义的析构函数的个数至多为(B)。A.0B.1C155.假定AB为一个类,则执行“AB*p*=newAB[n];〞语句时将(A)。A.动态分配一个数组B.动态分配一个对象C.静态分配一个数组D.静态分配一个对象156.设p*是指向一个类对象的指针变量,则执行“deletep*;〞语句时,将自动调用该类的(C)。A.无参构造函数B.带参构造函数C.析构函数D.拷贝构造函数157.当一个类对象离开它的作用域时,系统自动调用该类的(D)。A.无参构造函数B.带参构造函数C.拷贝构造函数D.析构函数158.假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为(C)。A.0B.1C.n159.假定AB为一个类,则执行“ABa[10];〞语句时调用该类无参构造函数的次数为(D)。A.0B.1C.9D.10160.假定AB为一个类,则执行“AB*p*=newAB[n];〞语句时调用该类无参构造函数的次数为(A)。A.nB.n-1C.1D.0161.假定AB为一个类,则执行“ABa,b(3),*p;〞语句时共调用该类构造函数的次数为(A)。A.2B.3C.4D.5162.假定AB为一个类,则执行“ABa(2),b[3],*p[4];〞语句时共调用该类构造函数的次数为(B)。A.3B.4C163.假定AB为一个类,则执行“ABa,b(2),c[3],*p=&a;〞语句时共调用该类无参构造函数的次数为(D)。A.5B.6C.3D.4164.假定AB为一个类,则执行“AB*p=newAB(1,2);〞语句时共调用该类构造函数的次数为(B)。A.0B.1C165.假定AB为一个类,p*为指向该类的一个含有n个对象的动态数组的指针,则执行“delete[]p*;〞语句时共调用该类析构函数的次数为(C)。A.0B.1C.n166.对类对象成员的初始化是通过构造函数中给出的(B)实现的。A.函数体B.初始化表C.参数表D.初始化表或函数体167.对类中常量成员的初始化是通过构造函数中给出的(C)实现的。A.函数体B.参数表C.初始化表D.初始化表或函数体168.对类中引用成员的初始化是通过构造函数中给出的(C)实现的。A.函数体B.参数表C.初始化表D.初始化表或函数体169.类的构造函数可以带有(D)个参数。A.0B.1C.2D.任意170.类的析构函数可以带有(A)个参数。A.0B.1C.2D.任意171.一个类的静态数据成员所表示属性(C)。A.是类的或对象的属性B.只是对象的属性C.只是类的属性D.类和友元的属性172.类的静态成员的访问控制〔D〕。A.只允许被定义为privateB.只允许被定义为private或protectedC.只允许被定义为publicD.可允许被定义为private、protected或public173.静态成员函数对类的数据成员访问〔B〕。A.是不允许的B.只允许是静态数据成员C.只允许是非静态数据成员D.可允许是静态数据成员或非静态数据成员174.被非静态成员函数访问的类的数据成员(A)。A.可以是非静态数据成员或静态数据成员B.不可能是类的静态数据成员C.只能是类的非静态数据成员D.只能是类的静态数据成员175.静态数据成员的初始化是在〔D〕中进展的。A.构造函数B.任何成员函数C.所属类D.全局区176.当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的〔D〕。A.只能是公有成员B.只能是保护成员C.只能是除私有成员之外的任何成员D.具有任何权限的成员177.引入友元的主要目的是为了〔C〕。A.增强数据平安性B.提高程序的可靠性C.提高程序的效率和灵活性D.保证类的封装性178.一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明〔A〕。A.需加上类域的限定B.不需加上类域的限定C.类域的限定可加可不加D.不需要任何限定179.一个类的友元不是该类的成员,与该类的关系密切,所以它〔D〕。A.有this指针,有默认操作的对象B.没有this指针,可以有默认操作的对象C.有this指针,不能执行默认操作D.没有this指针,也就没有默认操作的对象180.在重载一个运算符时,其参数表中没有任何参数,这说明该运算符是〔B〕。A.作为友元函数重载的1元运算符B.作为成员函数重载的1元运算符C.作为友元函数重载的2元运算符D.作为成员函数重载的2元运算符181.在成员函数中进展双目运算符重载时,其参数表中应带有〔B〕个参数。A.0B.1C182.双目运算符重载为普通函数时,其参数表中应带有〔C〕个参数。A.0B.1C.2183.如果表达式a+b中的“+〞是作为成员函数重载的运算符,假设采用运算符函数调用格式,则可表示为〔A〕。A.a.operator+(b)B.b.operator+(a)C.operator+(a,b)D.operator(a+b)184.如果表达式a==b中的“==〞是作为普通函数重载的运算符,假设采用运算符函数调用格式,则可表示为〔C〕。A.a.operator==(b)B.b.operator==(a)C.operator==(a,b)D.operator==(b,a)185.如果表达式a++中的“++〞是作为普通函数重载的运算符,假设采用运算符函数调用格式,则可表示为〔C〕。A.a.operator++()B.operator++(a)C.operator++(a,1)D.operator++(1,a)186.如果表达式++a中的“++〞是作为成员函数重载的运算符,假设采用运算符函数调用格式,则可表示为〔D〕。A.a.operator++(1)B.operator++(a)C.operator++(a,1)D.a.operator++()187.关于运算符重载,以下说确的是〔C〕。A.重载时,运算符的优先级可以改变。B.重载时,运算符的结合性可以改变。C.重载时,运算符的功能可以改变。D.重载时,运算符的操作数个数可以改变。188.关于运算符重载,以下说确的是〔B〕。A.所有的运算符都可以重载。B.通过重载,可以使运算符应用于自定义的数据类型。C.通过重载,可以创造原来没有的运算符。D.通过重载,可以改变运算符的优先级。189.一个程序中数组a和变量k定义为“inta[5][10],k;〞,且程序中包含有语句“a(2,5)=++k*3;〞,则此语句中肯定属于重载操作符的是〔A〕。A.()B.=C.++D.*190.假定K是一个类名,并有定义“Kk;intj;〞,K中重载了操作符(),且语句“j=k(3);〞和“k(5)=99;〞都能顺利执行,说明该操作符函数的原形只可能是〔C〕。A.Koperator()(int);B.intoperator()(int&);C.int&operator()(int);D.K&operator()(int);191.假定M是一个类名,且M中重载了操作符=,可以实现M对象间的连续赋值,如“m1=m2=m3;〞。重载操作符=的函数原型最好是〔D〕。A.intoperaotor=(M);B.intoperator=(M&);C.Moperator=(M&);D.M&operator=(M);192.下面是重载双目运算符+的普通函数原形,其中最符合+原来含义的是〔A〕。A.Valueoperator+(Value,Value);B.Valueoperator+(Value,int);C.Value&operator+(Value,Value);D.Value&operator+(Value&,Value&);193.下面是重载双目运算符-的成员函数原形,其中最符合-原来含义的是〔A〕。A.ValueValue::operator-(Value);B.ValueValue::operator-(int);C.Value&Value::operator-(Value);D.Value&Value::operator-(Value&);194.在重载一运算符时,假设运算符函数的形参表中没有参数,则不可能的情况是〔D〕。A.该运算符是一个单目运算符。B.该运算符函数有一个隐含的参数this。C.该运算符函数是类的成员函数。D.该运算符函数是类的友元函数。195.关于插入运算符<<的重载,以下说法不正确的选项是〔B〕。A.运算符函数的返回值类型是ostream&。B.重载的运算符必须定义为类的成员函数。C.运算符函数的第一个参数的类型是ostream&。D.运算符函数有两个参数。196.从一个基类派生出的各个类的对象之间(C)。A.共享所有数据成员,每个对象还包含基类的所有属性B.共享局部数据成员,每个对象还包含基类的所有属性C.不共享任何数据成员,但每个对象还包含基类的所有属性D.共享局部数据成员和函数成员197.如果是类B在类A的根底上构造,则,就称〔B〕。A.类A为基类或父类,类B为超类或子类B.类A为基类、父类或超类,类B为派生类或子类C.类A为派生类,类B为基类D.类A为派生类或子类,类B为基类、父类或超类198.C++的继承性允许派生类继承基类的〔C〕。A.局部特性,并允许增加新的特性或重定义基类的特性B.局部特性,但不允许增加新的特性或重定义基类的特性C.所有特性,并允许增加新的特性或重定义基类的特性D.所有特性,但不允许增加新的特性或重定义基类的特性199.派生类的成员函数可以直接访问基类的〔B〕成员。A.所有B.公有和保护C.保护和私有D.私有200.对于公有继承,基类的公有和保护成员在派生类中将(D)成员。A.全部变成公有B.全部变成保护C.全部变成私有D.仍然相应保持为公有和保护201.对于公有继承,基类中的私有成员在派生类中将(C)。A.能够直接使用成员名访问B.能够通过成员运算符访问C.仍然是基类的私有成员D.变为派生类的私有成员202.当保护继承时,基类的〔B〕在派生类中成为保护成员,在类作用域外不能够通过派生类的对象来直接访问该成员。A.任何成员B.公有成员和保护成员C.保护成员和私有成员D.私有成员203.在定义一个派生类时,假设不使用保存字显式地规定采用何种继承方式,则默认为〔A〕方式。A.私有继承B.非私有继承C.保护继承D.公有继承204.建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为〔C〕的构造函数。A.自己所属类、对象成员所属类、基类B.对象成员所属类、基类、自己所属类C.基类、对象成员所属类、自己所属类D.基类、自己所属类、对象成员所属类205.当派生类中有和基类一样名字的成员时,一般来说,〔B〕。A.将产生二义性B.派生类的同名成员将覆盖基类的成员C.是不能允许的D.基类的同名成员将覆盖派生类的成员206.C++中的虚基类机制可以保证:〔D〕。A.限定基类只通过一条路径派生出派生类B.允许基类通过多条路径派生出派生类,派生类也就能屡次继承该基类C.当一个类屡次间接从基类派生以后,派生类对象能保存多份间接基类的成员D.当一个类屡次间接从基类派生以后,其基类只被一次继承207.以下对派生类的描述中错误的说法是:〔D〕。A.派生类至少有一个基类B.派生类可作为另一个派生类的基类C.派生类除了包含它直接定义的成员外,还包含其基类的成员D.派生类所继承的基类成员的访问权限保持不变208.派生类的对象对其基类中〔A〕可直接访问。A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员二、判断题1.C++中标识符的大小写字母是没有区别的。〔F〕2.C++是一种以编译方式实现的高级语言。〔T〕3.计算函数参数顺序引起的二义性是由不同的编译系统决定的。〔T〕4.返回值类型、参数个数和类型都一样的函数也可以重载。〔F〕5.使用关键字class定义的类中缺省的访问权限是私有〔private〕的。〔T〕6.类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。〔F〕7.多继承情况下,派生类的构造函数的执行顺序取决于成员初始化列表中的顺序。〔F〕8.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。〔F〕9.在私有继承中,基类中所有成员对派生类都是不可见的。〔F〕10.在保护继承中,对于垂直访问等同于公有继承,对于水平访问等同于私有继承。〔T〕11.构造函数可以声明为虚函数。〔F〕12.在析构函数中调用虚函数时,采用动态束定。〔F〕13.在一个成员函数调用一个虚函数时,对该虚函数的调用进展动态束定。〔T〕14.公有继承可以实现子类型。〔T〕15.构造函数可以声明为纯虚函数。〔F〕16.说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值类型就可以了。对17.所有的表达式都有值。错18.程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。对19.类的静态数据成员需要在定义每个类的对象时进展初始化。错20.基类中被说明为protected和private的成员只能被其派生类的成员函数访问,不能被其它的函数访问。错21.当将一个类S定义为另一个类A的友元类时,类S的所有成员函数都可以直接访问类A的所有成员。对22.当函数的返回值是数组类型的,传递的是数组第一个元素的地址。错23.如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型一样,则,这个函数自动继承基类中虚函数的特性。对24.字符串’hello,world〞在存中存放时,占用11个字节的空间。错25.用new动态申请的存空间,必须用delete来释放。对26.静态数据成员必须在类外定义和初始化。〔√〕27.保护继承时,派生类中的成员函数可以直接访问基类中的protected成员。〔√〕28.静态成员函数可以引用属于该类的任何函数成员。〔×〕29.指针常量可以指向相应类型的常量。〔√〕30.友元函数是在类声明中由关键字friend修饰说明的类的成员函数。〔×〕31.如果程序中未声明构造函数,则系统自动产生出一个默认形式的构造函数。〔√〕32.友元函数访问对象中的成员可以不通过对象名〔×〕33.如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数。〔√〕34.类中的成员数据可以是另一个类的对象。〔√〕35.常引用做形参,在函数中不能更新所引用的对象。〔√〕36.虚函数不能是类的静态成员。对37.重定义虚函数的派生类必须是公有继承的。对38.对于从基类继承的虚函数,派生类也可以不进展重定义。对39.纯虚函数与函数体为空的虚函数等价。错40.多态类提供了一种动态多分支派送机制。对41.作为虚函数隐含参数的this指针,决定了虚函数调用时执行的代码。对三、填空题1.C++语言是在_________语言的根底上开展起来的。2.C++语言的编译单位是扩展名为__________的__________文件。5.用于输出表达式值的标准输出流对象是_________。6.用于从键盘上为变量输入值的标准输入流对象是________。8.一个函数的函数体就是一条_________语句。9.当执行cin语句时,从键盘上输入每个数据后必须接着输入一个________符,然后才能继续输入下一个数据。10.在C++程序中包含一个头文件或程序文件的预编译命令为__________。13.在*include命令中所包含的头文件,可以是系统定义的头文件,也可以是________定义的头文件。14.使用*include命令可以包含一个头文件,也可以包含一个______文件。17.C++头文件和源程序文件的扩展名分别为______和______。18.程序文件的编译错误分为________和________两类。22.当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到________的开场位置。38.在C++中存储字符串〞abcdef〞至少需要________个字节。39.在C++中存储字符串〞a+b=c〞至少需要________个字节。52.设enumPrintstatus{ready,busy,error};则cout<<busy的输出结果是________。53.设enumPrintstatus{ready=2,busy,error};则cout<<busy的输出结果是________。55.枚举类型中的每个枚举值都是一个__________,它的值为一个__________。87.在C++语言中,一个函数由函数头和__________组成。88.重载一个函数的条件是:该函数必须在参数的个数或参数的__________上与其它同名函数有所不同。89.如果一个函数只允许同一程序中的函数调用,则应在该函数定义前加上__________C++保存字。90.假设“double*=100;〞是文件F1.CPP中的一个全局变量定义语句,假设文件F2.CPP中的*个函数需要访问此*,则应在文件F2.CPP中添加对*的声明语句为_________________。91.定义一个函数模板要用到的第一个修饰符是____________。92.在函数模板的参数中,用class修饰的参数称为__________参数。93.如果一个函数直接或间接地调用自身,这样的调用称为____________调用。94.intcubin(intn){returnn*n*n;}和doublecubin(doublen){returnn*n*n;}是一个函数模板的两个实例,假定类型参数用T表示,则该函数模板的定义是__________________________________。96.如果一个函数定义中使用了__________修饰,则该函数不允许被其它文件中的函数调用。97.如果一个函数中有多个默认参数,则默认参数必须全部处在形参表的________局部。98.定义外部变量时,不用存储类说明符_________,而声明外部变量时用它。99.调用系统函数时,要先使用*include命令包含该系统函数的原型语句所在的__________。100.函数形参的作用域是该函数的____________。101.C++提供的预处理命令有宏定义命令,条件编译命令和____________。103.C++程序运行时的存空间可以分成全局数据区,堆区,栈区和__________。104.全局变量和静态局部变量具有静态生存期,存放在存的____________区中。105.局部变量具有局部生存期,存放在存的____________区中。135.执行intp=newint操作得到的一个动态分配的整型对象为________。
136.执行int*p=newint[10]操作,使p指向动态分配的数组中下标为0的元素,该元素可表示为_______或________。137.执行char*p=newchar(’a’)操作后,p所指向的数据对象的值为________。138.执行newchar[m][n]操作时的返回值的类型为________。139.执行________操作将释放由p所指向的动态分配的数据空间。140.执行________操作将释放由p所指向的动态分配的数组空间。141.NULL是一个符号常量,通常作为空指针值,它的具体值为________。153.以面向对象方法构造的系统,其根本单位是__________。154.每个对象都是所属类的一个__________。155.对象将其大局部实现细节隐藏起来,这种机制称为__________。156.基类和派生类的关系称为__________。157.复杂对象可以由简单对象构成,这种现象称为__________。158.对象是对问题域中客观事物的________,它是一组属性和在这些属性上操作的__________。159.特殊类的对象拥有其一般类的全部属性与操作,称特殊类________了一般类。160.如果一个派生类的基类不止一个,则这种继承称为____________。161.如果一个派生类只有一个唯一的基类,则这样的继承关系称为__________。162.C++支持两种多态性:_________时的多态性和__________时的多态性。163.在C++中,编译时的多态性是通过__________实现的,而运行时的多态性则是通过__________实现的。164.面向对象软件开发的生命周期分为三个阶段,即分析、__________和__________。165.面向对象的分析包括__________分析和__________分析两步。166.类定义中,既包含数据成员,也包含________成员。167.类中的数据成员的访问属性通常被指明为________。168.类中的供外部调用定义的函数成员,其访问属性通常被定义为________。169.对于类中定义的任何成员,其隐含访问权限为________。170.对于构造中定义的任何成员,其隐含访问权限为________。171.为了使类中的成员不能被类外的函数通过成员操作符访问,则应把该成员的访问权限定义为________。172.假设在类的定义体中给出了一个成员函数的完整定义,则该函数属于________函数。173.假设在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上________和两个冒号分隔符。174.假设在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上类名和两个________分隔符。175.假设要把类外定义的成员函数规定为联函数,则必须把________关键字放到函数原型或函数头的前面。176.把一个类的定义体和所有成员函数的定义体所构成的程序围叫做该类的____________。177.假定AA是一个类,“AA*abc();〞是该类中一个成员函数的原型,则在类外定义时的函数头为__________________。178.成员函数的参数表在类作用域中,成员函数的返回值类型________类作用域中。179.为了防止在调用成员函数时修改对象中的任何数据成员,则应在定义该成员函数时,在函数头的后面加上________关键字。180.假设只需要通过一个成员函数读取数据成员的值,而不需要修改它,则应在函数头的后面加上________关键字。181.假设采用*.abc(y)表达式调用一个成员函数,在成员函数中使用的________就代表了类外的*对象。182.假设采用p->abc(y)表达式调用一个成员函数,在成员函数中使用的________就代表了类外的p指针。183.联函数的定义模块与________模块必须放在同一个文件中。
184.假定AA是一个类,“AA*abc()const;〞是该类中一个成员函数的原型,在该函数体中〔能够/不能够〕__________向*this或其成员赋值。
185.在一个用数组实现的队列类中,包含有两个数据成员,一个指明队首元素位置,另一个指明____________。186.在一个用数组实现的队列类中,包含有两个数据成员,一个指明队列长度,另一个指明__________元素的位置。187.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则插入一个新元素的位置为__________。188.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则删除一个元素后队首的位置为__________。189.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队列为空的条件为__________。190.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队列为满的条件为__________。191.当一个队列为空时,不能对其做________元素的操作。192.当一个队列为满时,不能对其做________元素的操作。193.从一个队列中删除元素就是删除________位置上的元素。194.向一个队列中插入元素就是把该元素放到________元素的后一位置上。195.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用ne*t表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,当链队非空时,_____________指向队首结点的后继〔即下一个〕结点。196.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用ne*t表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,当链队非空时,新插入结点的地址应当赋给___________所指结点的ne*t域。197.在一个用链表实现的队列类中,队尾结点的指针域的值为________。198.在一个用链表实现的队列类中,假设链队中只含有一个结点,则队首指针的值与队尾指针的值________。199.在一个用链表实现的队列类中,假设链队为空或只含有一个结点,则队首指针的值与队尾指针的值________。200.在一个用链表实现的队列类中,假设队首指针与队尾指针的值不同,则说明链队中至少包含有________个结点。201.一个类的__________函数实现对该类对象的初始化功能。202.一个类的__________函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。203.当用户为一个类定义有____________时,则系统不会为该类再自动生成一个默认构造函数。204.假定用户没有给一个名为AB的类定义构造函数,则系统为其定义的构造函数为__________。205.假定用户没有给一个名为AB的类定义析构函数,则系统为其定义的析构函数为__________。206.定义类动态对象数组时,其元素只能靠自动调用该类的____________来进展初始化。207.在一个类中定义拷贝构造函数的目的,是为了当利用该类的一个对象初始化另一个对象时,能够防止这两个对象的同一指针同时指向同一块__________________。208.为了释放类对象中指针成员所指向的动态存储空间,则需要为该类定义____________。209.假定AB为一个类,则执行“ABa[10];〞语句时,系统自动调用该类构造函数的次数为________。210.假定一个类对象数组为A[N],当离开它的作用域时,系统自动调用该类析构函数的次数为________。211.对类中对象成员的初始化是通过在构造函数中给出的______________来实现的。212.对类中常量成员的初始化是通过在构造函数中给出的______________来实现的。213.对类中引用成员的初始化只能通过在构造函数中给出的______________来实现。214.对类中一般数据成员的初始化既可以通过在构造函数中给出的初始化表来实现,也可以通过构造函数中的____________来实现。215.假定要把aa定义为AB类中的一个常量整数型数据成员,则定义语句为____________。216.假定要把aa定义为AB类中的一个引用整数型数据成员,则定义语句为____________。217.假定AB类中只包含一个整型数据成员a,并且它是一个常量成员,假设利用参数aa对其进展初始化,则该类的构造函数的定义为____________________。218.假定AB类中只包含一个整型数据成员a,并且它是一个引用成员,假设利用引用参数aa对其进展初始化,则该类的构造函数的定义为____________________。219.假定指针p指向一个动态分配的类对象,则当执行“deletep;〞语句时,在释放p所指向的动态存储空间之前将自动调用该类的____________。220.假定用户为类AB定义了一个构造函数“AB(intaa){a=aa;}〞,则系统〔会/不会〕_________为该类自动定义一个无参构造函数"AB(){}"。221.假定用户为类AB定义了一个构造函数“AB(intaa,char*bb=NULL):a(aa),b(bb){}〞,则该类中至少包含有__________个数据成员。222.假定用户为类AB定义了一个构造函数“AB(intaa){a=aa;}〞,该构造函数实现对数据成员_________的初始化。223.假定用户为类AB定义了一个构造函数“AB(intaa=0):a(aa){}〞,则定义该类的对象时,可以有________种不同的定义格式。224.假定用户为类AB定义了一个构造函数“AB(intaa):a(aa){}〞,则定义该类的对象时,有________种定义格式。225.假定用户只为类AB定义了一个构造函数“AB(intaa,intbb=0){a=aa;b=bb;}〞,则定义该类的对象时,其实参表中至多带有_________个实参。226.假定用户只为类AB定义了一个构造函数“AB(intaa,intbb=0){a=aa;b=bb;}〞,则定义该类的对象时,其实参表中至少带有_________个实参。227.假定用户为类AB定义了一个构造函数“AB(intaa=0,intbb=0){a=aa;b=bb;}〞,则定义该类的对象时,可以有________种不同的定义格式。228.假定用户只为类AB定义了一个构造函数“AB():a(0),b(0){}〞,则定义该类对象*的定义语句“AB*();〞是_________(正确/错误)的。229.假定用户只为类AB定义了一个构造函数“AB():a(0),b(0){}〞,则定义该类对象*的定义语句“AB*;〞是_________(正确/错误)的。230.假定用户只为类AB定义了一个构造函数“AB():a(0),b(0){}〞,则定义该类对象*的定义语句“AB*(5);〞是_________(正确/错误)的。231.假定AB为一个类,则类定义体中的“AB(AB*);〞语句为该类______________的原型语句。232.假定AB为一个类,则该类的拷贝构造函数的函数头为_____________。233.假定AB为一个类,该类中含有一个指向动态数组空间的指针成员pa,则在该类的析构函数中应该包含有一条______________语句。234.静态成员函数____访问类的静态数据成员,____访问类的非静态数据成员。235.静态数据成员必须在所有函数的定义体外进展__________。236.一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明必须在函数名前加上__________的限定。237.重载运算符时,该运算符的__________、结合性以及操作符的个数不允许改变。238.一个单目运算符作为类的成员函数重载时有________个参数;如果作为独立函数重载,则有________个参数。239.一个双单目运算符作为类的成员函数重载时有________个参数;如果作为独立函数重载,则有________个参数。240.除了__________运算符外,其他重载的运算符都可以被派生类继承。241.作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有________个操作数。242.在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的_____________。243.重载插入运算符<<时,其运算符函数的返回值类型应当是____________。244.重载抽取运算符>>时,其运算符函数的返回值类型应当是____________。245.重载插入运算符<<或抽取运算符>>时,其运算符函数的参数有________个。246.重载插入运算符<<或抽取运算符>>时,其运算符函数不能被定义为类的________函数。247.类型转换函数没有____________类型,而且参数表为____________。248.在一个或假设干个类的根底上构造一个新类,被称为___________。249.派生类的成员函数可以直接访问基类的__________成员,不能直接访问基类的______成员。250.当保护继承时,基类的__________成员在派生类中成为保护成员,派生类对象不能直接访问基类的__________成员。251.在定义一个派生类时,使用__________关键字或者不显式地使用它则表示为__________
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022年业务员辞职报告15篇
- 护士的实习报告模板锦集五篇
- 城中村改造项目建设方案
- 室内设计师工作总结范文
- 药学院学生实习报告
- 2024年国际贸易交涉流程与协议订定指南
- 2024年委托代扣企业投资回报收益分配授权合同3篇
- 老旧厂区改造技术可行性分析
- 物联网基础课程设计
- 2024年股份投资合作协议模板版B版
- 门诊病历书写模板全
- 煤油(火油)的理化性质及危险特性表MSDS
- 锅炉延期检验申请书
- 液压与气压传动中职PPT完整全套教学课件
- 国开大学2023年01月11067《知识产权法》期末考试答案
- 直接打印800字作文纸
- 石油产品密度基本知识认知
- (完整word版)人教版高中数学大纲
- 货物供货总体服务方案
- 青岛版二年级数学下册《周期问题》教案
- 第三章热力学第二定律物理化学
评论
0/150
提交评论