您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > 面向对象程序设计形成性考核册作业四
面向对象程序设计形成性考核册作业四一、填空题:1.设px是指向一个类对象的指针变量,则执行“deletepx;”语句时,将自动调用该类的(C)。A.无参构造函数B.带参构造函数C.析构函数D.拷贝构造函数2.假定AB为一个类,则执行“ABa[10];”语句时调用该类无参构造函数的次数为(D)。A.0B.1C.9D.103.假定AB为一个类,则执行“ABa(2),b[3],*p[4];”语句时共调用该类构造函数的次数为(B)。A.3B.4C.5D.94.假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete[]px;”语句时共调用该类析构函数的次数为(C)。A.0B.1C.nD.n+15.对类中引用成员的初始化是通过构造函数中给出的(C)实现的。A.函数体B.参数表C.初始化表D.初始化表或函数体6.一个类的静态数据成员所表示属性(C)。A.是类的或对象的属性B.只是对象的属性C.只是类的属性D.类和友元的属性7.被非静态成员函数访问的类的数据成员(A)。A.可以是非静态数据成员或静态数据成员B.不可能是类的静态数据成员C.只能是类的非静态数据成员D.只能是类的静态数据成员8.引入友元的主要目的是为了(C)。A.增强数据安全性B.提高程序的可靠性C.提高程序的效率和灵活性D.保证类的封装性9.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是(B)。A.作为友元函数重载的1元运算符B.作为成员函数重载的1元运算符C.作为友元函数重载的2元运算符D.作为成员函数重载的2元运算符10.如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为(A)。A.a.operator+(b)B.b.operator+(a)C.operator+(a,b)D.operator(a+b)11.如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为(D)。A.a.operator++(1)B.operator++(a)C.operator++(a,1)D.a.operator++()12.一个程序中数组a和变量k定义为“inta[5][10],k;”,且程序中包含有语句“a(2,5)=++k*3;”,则此语句中肯定属于重载操作符的是(A)。A.()B.=C.++D.*13.下面是重载双目运算符+的普通函数原形,其中最符合+原来含义的是(A)。A.Valueoperator+(Value,Value);B.Valueoperator+(Value,int);C.Value&operator+(Value,Value);D.Value&operator+(Value&,Value&);14.关于插入运算符的重载,下列说法不正确的是(B)。A.运算符函数的返回值类型是ostream&。B.重载的运算符必须定义为类的成员函数。C.运算符函数的第一个参数的类型是ostream&。D.运算符函数有两个参数。15.C++的继承性允许派生类继承基类的(C)。A.部分特性,并允许增加新的特性或重定义基类的特性B.部分特性,但不允许增加新的特性或重定义基类的特性C.所有特性,并允许增加新的特性或重定义基类的特性D.所有特性,但不允许增加新的特性或重定义基类的特性16.对于公有继承,基类中的私有成员在派生类中将(C)。A.能够直接使用成员名访问B.能够通过成员运算符访问C.仍然是基类的私有成员D.变为派生类的私有成员17.建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为(C)的构造函数。A.自己所属类、对象成员所属类、基类B.对象成员所属类、基类、自己所属类C.基类、对象成员所属类、自己所属类D.基类、自己所属类、对象成员所属类18.下列对派生类的描述中错误的说法是:(D)。A.派生类至少有一个基类B.派生类可作为另一个派生类的基类C.派生类除了包含它直接定义的成员外,还包含其基类的成员D.派生类所继承的基类成员的访问权限保持不变二、填空题1.当一个队列为满时,不能对其做___插入_____元素的操作。2.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,当链队非空时,__elemHead-next___________指向队首结点的后继(即下一个)结点。3.在一个用链表实现的队列类中,若链队为空或只含有一个结点,则队首指针的值与队尾指针的值___相同_____。4.一个类的___析构_______函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。5.定义类动态对象数组时,其元素只能靠自动调用该类的___无参构造函数_________来进行初始化。6.假定AB为一个类,则执行“ABa[10];”语句时,系统自动调用该类构造函数的次数为___10_____。7.对类中引用成员的初始化只能通过在构造函数中给出的___初始化表_______来实现。8.假定要把aa定义为AB类中的一个引用整数型数据成员,则定义语句为_int&aa;__。9.假定用户为类AB定义了一个构造函数“AB(intaa){a=aa;}”,则系统__不会_______为该类自动定义一个无参构造函数AB(){}。10.假定用户为类AB定义了一个构造函数“AB(intaa=0):a(aa){}”,则定义该类的对象时,可以有____2____种不同的定义格式。11.假定用户为类AB定义了一个构造函数“AB(intaa=0,intbb=0){a=aa;b=bb;}”,则定义该类的对象时,可以有___3_____种不同的定义格式。12.假定用户只为类AB定义了一个构造函数“AB():a(0),b(0){}”,则定义该类对象x的定义语句“ABx(5);”是___错误______(正确/错误)的。13.静态成员函数只能____访问类的静态数据成员,_不能___访问类的非静态数据成员。14.重载运算符时,该运算符的__优先级______、结合性以及操作符的个数不允许改变。15.作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有____2____个操作数。16.重载抽取运算符时,其运算符函数的返回值类型应当是___istream&_________。17.类型转换函数没有____返回值________类型,而且参数表为__空__________。18.当保护继承时,基类的_公有和保护__成员在派生类中成为保护成员,派生类对象不能直接访问基类的任何____成员。19.引进虚基类的根本目的是为了消除____二义性________。三、程序填空:1.已知一个利用数组实现栈的类定义如下:constintARRAY_SIZE=10;classStack{public:voidInit(){top=-1;}//初始化栈为空voidPush(intnewElem);//向栈中压入一个元素intPop();//从栈顶弹出一个元素boolEmpty(){//判栈空if(top==-1)returntrue;elsereturnfalse;}intDepth(){returntop+1;}//返回栈的深度voidPrint();//按照后进先出原则依次输出栈中每个元素,直到栈空为止private:intelem[ARRAY_SIZE];//用于保存堆栈元素的数组inttop;//指明栈顶元素位置的指针};该类的Pop和Print函数的实现分别如下:___(1)___{if(top==-1){cout栈空!endl;exit(1);//中止运行}return___(2)___;}voidStack::Print(){while(!Empty())cout___(3)___'';}(1)intStack::Pop()(2)elem[top--](3)Pop()2.#includeiostream.h#includestdlib.hclassA{int*a;intn;intMaxLen;public:A():a(0),n(0),MaxLen(0){}A(int*aa,intnn,intMM){n=nn;MaxLen=MM;if(nMaxLen)exit(1);___(1)___;//由a指向长度为MaxLen的动态数组for(inti=0;in;i++)a[i]=aa[i];}~A(){delete[]a;}intGetValue(inti)___(2)___//函数体返回a[i]的值};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10};Ar(b,10,10);inti,s=0;for(i=0;i10;i++)___(3)___;//把r对象的a数据成员中的每个//元素值依次累加到s中couts=sendl;}(1)a=newint[MaxLen](2){returna[i];}(3)s+=r.GetValue(i)3.在下面一段类定义中,Derived类公有继承了基类Base。需要填充的函数由注释内容给出了功能。classBase{private:intmem1,mem2;//基类的数据成员public:Base(intm1,intm2){mem1=m1;mem2=m2;}voidoutput(){coutmem1''mem2'';}//...};classDerived:publicBase{private:intmem3;//派生类本身的数据成员public://构造函数,由m1和m2分别初始化mem1和mem2,由m3初始化mem3Derived(intm1,intm2,intm3);//输出mem1,mem2和mem3数据成员的值voidoutput(){___(1)___;coutmem3endl;}//...};Derived::Derived(intm1,intm2,intm3):___(2)___{___(3)___;}(1)Base::output()(2)Base(m1,m2)(3)mem3=m3四、写出程序运行结果:1.#includeiostream.hclassFranction{//定义分数类intnume;//定义分子intdeno;//定义分母public://把*this化简为最简分数,具体定义在另外文件中实现voidFranSimp();//返回两个分数*this和x之和,具体定义在另外文件中实现FranctionFranAdd(constFranction&x);//置分数的分子和分母分别0和1voidInitFranction(){nume=0;deno=1;}//置分数的分子和分母分别n和dvoidInitFranction(intn,intd){nume=n;deno=d;}//输出一个分数voidFranOutput(){coutnume'/'denoendl;}};voidmain(){Franctiona,b,c,d;a.InitFranction(6,15);b.InitFranction(3,10);c.InitFranction();c=a.FranAdd(b);d=c.FranAdd(a);couta:;a.FranOutput();coutb:;b.FranOutput();coutc:;c.FranOutput();coutd:;d.FranOutput();}程序运行结果为:a:6/15b:3/10c:7/10d:11/102.#includeiostream.hclassA{inta,b;public:A(){a=b=0;}A(intaa,intbb){a=aa;b=bb;}intSum(){returna+b;}int*Mult(){
本文标题:面向对象程序设计形成性考核册作业四
链接地址:https://www.777doc.com/doc-949739 .html