第六到八章 作业(带答案).doc_第1页
第六到八章 作业(带答案).doc_第2页
第六到八章 作业(带答案).doc_第3页
第六到八章 作业(带答案).doc_第4页
第六到八章 作业(带答案).doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、 单选1-5DDBDC 6-10 DABCC11、C 12 、D一 单项选择题1.下列有关派生类的叙述中,错误的是( D )A、一个派生类至少有一个基类; B、派生类的默认继承方式是private;C.、一个派生类可以另一个派生类的基类;D、派生类只继承了基类的公有成员和保护成员;2.下列有关继承和派生类的叙述中,正确的是:( D )A、作为虚基类的类不能被实例化;B、派生类不能访问基类的保护成员;C、虚函数必须在派生类中重新实现;D、派生类应当向基类的构造函数传递参数;3.有如下类定义class XXint xdata;public:XX(int n=0):xdata(n);class YY:public XXint ydata;public:YY(int m=0,int n=0):XX(m),ydata(n);YY类的对象包含的数据成员的个数为( B )A、1 B、2 C、3 D、44.如果派生类以protected方式继承基类,则原基类的protected成员和public成员在派生类中的访问权限分别是( D )A、private和public B、private和protectedC、protected和public D、protected和protected5.有下列类的定义:class Baseint k;public:void set(int n)k=n;int get() const return k;class Derived : protected Baseprotected:int j;public:void set (int m,int n)Base:set(m);j=n;int get() const return Base:get()+j;则类Derived中保护的数据成员和成员函数的个数是( C )A、1 B、2 C、3 D、46.下列关于派生类构造函数和析构函数的叙述中,错误的是( D )A、派生类的构造函数会隐含调用基类的构造函数;B、如果基类中没有默认的构造函数,那么派生类必须定义构造函数;C、在建立派生类对象时,先调用基类的构造函数,在调用派生类的构造函数;D、在销毁派生类的对象时,先调用基类的析构函数,在调用派生类的析构函数;7.设class Y:public X,即类Y是类X的派生类,则创建一个Y类的对象和删除一个Y类对象时,调用构造函数和析构函数的次序分别为 ( A )A. X、Y;Y、X B. X、Y;X、YC. Y、X;X、Y D. Y、X;Y、X8.将类A说明是类B的虚基类,下列叙述正确的是 ( B )A. class virtual B:public A B. class B:virtual public AC. virtual class B:public A D. class B:public A virtual9.下列关于虚基类的叙述中,错误的是( C )A、使用虚基类可以消除由多继承产生的二义性;B、构造派生类的对象时,虚基类的构造函数只被调用一次;C、声明“class B:virtual public A”说明类B为虚基类;D、建立派生类对象时,首先调用虚基类的构造函数;10下列关于虚基类的叙述中,错误的是( C )A、设置虚基类的目的是消除二义性;B、虚基类子对象的初始化由最派生类完成;C、虚基类子对象的初始化次数与虚基类下面的派生类个数有关;D、带有虚基类的多层派生类构造函数的成员初始化列表中都要列出对虚基类构造函数的调用;11有如下程序:/#include stdafx.h#include using namespace std;class Baseint x;public:Base(int n=0):x(n)coutn; /构造函数中形参有初始化值相当于无参数的构造函数int getX() constreturn x;class Dervied:public Baseint y;public:Dervied(int m,int n):y(m),Base(n)coutm; /d2 32Dervied(int m):y(m)coutm; /d1 01;int main()Dervied d1(1),d2(2,3);return 0;程序执行后,输出结果为( C )A、124 B、132 C、0132 D、102312.有如下程序:/#include stdafx.h#include using namespace std;class Baseprivate:void fun1()constcoutfun1;protected:void fun2()constcoutfun2;public:void fun3()constcoutfun3;class Derived:protected Basepublic:void fun4()constcoutfun4;int main()Derived obj;obj.fun1(); /(1)obj.fun2(); /(2)obj.fun3(); /(3)obj.fun4(); /(4)return 0;其中有语法错误的语句是( D )A、(1) B、(1)和(2) C、(1)和(3) D、(1)(2)和(3)二 分析下列程序,写出程序的运行结果。1./#include stdafx.h#include using namespace std;class Foopublic:Foo(int x)(*this).x=x;coutA;Foo()x=0;coutZ;private:int x;int main()Foo f3,g(3);return 0;运行结果为:_ZZZA_2.#include using namespace std;class Apublic:A()coutA;A()coutA;class BA* p;public:B()coutB;p=new A();B()coutB;delete p;int main()B obj;return 0;运行结果_BABA_3.(1)/#include stdafx.h#include using namespace std;class myClasspublic:myClass(int i=0):n(i)coutA;/n=imyClass(myClass &c):n(c.getValue()coutC;int getValue()constreturn n;/myClass()coutD;private:int n;void show(myClass c)coutc.getValue ();int main()myClass c1;show(c1);myClass c2(2);show(c2);return 0;运行结果:_AC0DAC2DDD_4./#include stdafx.h#include using namespace std;class Bpublic:B()coutdefault constructorendl;B()coutdestructedendl;bdata=5tempdata=5B(int i):data(i)coutconstructed by parameterdataendl;private:int data;B Play(B b)return b; /形式参数空间的释放int main()B temp=Play(5); return 0;运行结果:constructed by parameter5_ destructed _ destructed5./#include stdafx.h#include using namespace std;class Testprivate:static int val;int a;public:static int func();static void sfunc (Test &r);int Test:val =20;int Test:func()val+=val;return val;void Test:sfunc (Test &r)r.a=25;coutResult3=r.aendl;int main()coutResult1=Test:func()endl;Test a ;coutResult2=a.func()endl;Test:sfunc (a);return 0;运行结果:_Result1=40Result2=80Result3=25_6/#include stdafx.h#include using namespace std;class ClassOnepublic:ClassOne()i=0;coutA;ClassOne(int value):i(value)coutB;ClassOne()coutC;void Print()couti;private:int i;class ClassTwopublic:ClassTwo()i=0;coutD;ClassTwo(int value):i(value)coutE;ClassTwo()coutF;void Print()couti;private:ClassOne myobj;int i;int main()ClassTwo myclass(5);myclass.Print();return 0;运行结果:_AE5FC_7./#include stdafx.h#include using namespace std;class Pointpublic:Point(int xx=0,int yy=0)X=xx;Y=yy;countP+;Point(Point &p)X=p.X;Y=p.Y;countP+;int GetX()return X;int GetY()return Y;static void GetC()coutObject id=countPendl;private:int X,Y;static int countP;int Point:countP=0;int main()Point:GetC();Point A(10,20);coutPoint A:(A.GetX(),A.GetY()endl;A.GetC();Point B(A);coutPoint B:(B.GetX(),B.GetY()endl;Point:GetC();return 0;运行结果:_Object id=0Point A:(10.20)Object id=1Point B:(10,20)Object id=2_8./#include stdafx.h#include using namespace std;class MyClasspublic:MyClass(int x=0):i(x)coutCi;MyClass()coutDi;void SetValue(int val)i=val;int GetVal() return i;private:int i;int main()MyClass *p3;int i;for(i=0;iSetValue(pi-GetVal()*2);for(i=0;i3;i+)delete pi;coutendl;return 0;运行结果:_C0C1C2D0D2D4_9./#include stdafx.h#include using namespace std;class PARENTpublic:PARENTPARENT()cout PARENTendl;class SON:public PARENTpublic:SON()coutSONendl;int main()SON son;PARENT *p;p =& son;return 0;运行结果:_PARENTSON_10.(同题2类似)/#include stdafx.h#include using namespace std;class Apublic:A()coutA;A()coutA;class B:public AA*p;public:B()coutB;p=new A();B()coutB;delete p;int main()B obj;return 0;运行结果:_ABABAA_11./#include stdafx.h#include using namespace std;class Bpublic: B()cout”BBn”;B(int x) X=x; coutB(x)n;B()coutB()n;void print()coutX ;private:int X;class D:public Bpublic:D(int x,int y)Y=y;coutD(x,y)n;D() coutD()n;void print() coutYendl;private:int Y;int main()D d(11,22);d.print();return 0;运行结果:_BBD(11,22)22D()B()_12./#include stdafx.h#include using namespace std;class Apublic:A()a=0;A(int i)a=i;void print()couta ;private:int a;class B:public Apublic:B()b=0;B(int i,int j,int k):A(i),aa(j)b=k;void print()A:print();aa.print();coutbendl;private:int b;A aa;int main()B test2;test0=B(1,4,7);test1=B(2,5,8);for (int i=0;i2;i+)testi.print();return 0;运行结果:_1 4 72 5 8_13./#include stdafx.h#include using namespace std;class Datapublic:Data(int i):x(i)coutA;Data()coutB;private:int x;class Basepublic:Base(int i):b1(i)coutC;Base()coutD;private:int b1;class Derived:public Basepublic:Derived(int i,int j):Base(i),d1(j)coutE;Derived()coutF;private:Data d1;int main()Derived obj(1,2);return 0;运行结果:_CAEFBD_14./#include stdafx.h#include using namespace std;class Basepublic:Base(char i)coutBase constructor.-iendl;class Derived1:virtual public Basepublic:Derived1(char i,char j):Base(i)coutDerived1 constructor.-jendl;class Derived2:virtual public Basepublic:Derived2(char i,char j):Base(i)coutDerived2 constructor.-jendl;class MyDerived:public Derived1,public Derived2public:MyDerived(char i,char j,char k,char l,char m,char n,char x):Derived2(i,j),Derived1(k,l),Base(m),d(n)coutMyDerived constructor.-xendl;private:Base d;int main()MyDerived obj(A,B,C,D,E,F,G);return 0;运行结果:_Base constructor.EDerived1 constructor.DDerived2 constructor.BBase constructor.FMyDerived constructor.- G_15./#include stdafx.h#include using namespace std;class Apublic:int n;class B:public A; /class B:virtual public A;class C:public A; /class C:virtual public A;class D:public B,public Cpublic:int getn()return B:n;int main()D d;d.B:n=10;d.C:n=20;coutd.getn()endl;return 0;(1) 执行程序后,运行的结果是多少?运行结果:_10_(2) 将程序中有注释的两条语句修改为注释的内容,即将“class B:public A; ” 修改为“class B:virtual public A;”,“ class C:public A; ”修改为“class C:virtual public A;”,重新编译运行程序,程序的运行结果是多少?运行结果:_20_1传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、StayLOpen(保持打开)、Closing(正在关闭)五种状态。触发传输门状态转换的事件有click、compete和timeout三种。事件与其相应的状态转换如图8-1所示: 图8-1/#include stdafx.h#include using namespace std;/定义状态变量,用不同整数表示不同状态const int CLOSED=1;const int OPENING=2;const int OPEN=3;const int CLOSING=4;const int STAYOPEN=5;class Doorpublic:Door():state(CLOSED);void getState() /根据当前状态输出相应的字符串 switch(state) case OPENING: coutOPENINGendl;break;case CLOSED: coutCLOSEDendl;break; case OPEN: coutOPENendl;break;case CLOSING: coutCLOSINGendl;break;case STAYOPEN: coutSTAYOPENstate=state;int main()Door aDoor;aDoor.getState(); /CLOSEDaDoor.click(); aDoor.getState(); /OPENINGaDplete(); aDoor.getState(); /OPENaDoor.click(); aDoor.getState(); /STAYOPENaDoor.click(); aDoor.getState(); /CLOSINGreturn 0;2.下列程序中用静态数据成员countP记录point对象个数。程序运行结果为:Object count=0Object count=5Object count=2#include using namespace std;class Pointpublic:Point(int xx=0,int yy=0):X(xx),Y(yy)_countP+;_;/(1) Point(_Point &p_):X(p.X),Y(p.Y) /(2) _countP+;_; /(3) _Point()_ countP-; /(4) int GetX()return X; int GetY()return Y; static void GetC() coutObject count=countP endl; private:int X,Y;static int_countP; /(5);int_ Point :countP=0; /(6)int main()Point:GetC();Point A(10,20);Point B(A);Point *p3;for(int i=0;i3;i+)pi=new Point(i,i);Point:GetC();for(i=0;i3;i+)delete pi;Point:GetC();return 0;3.请将下列程序横线处缺少的部分补上,使其能正常运行(1)使一下程序输出的结果为:Name :黄蓉Grade :19#include using namespace std;class Personpublic:Person(char* s)strcpy(name ,s);void display()coutName:nameendl;private:char name20;class Student:public Personpublic:Student (char *s,int g):_Person(s)_grade=g; /(1)void display()_Person:display()_; /(2)coutGrade:gradeendl;private:int grade;int main()Student s (黄蓉,19); _s.display()_; /(3)return 0;(2)使以下程序输出的结果为:This is Guo jing who is 21 years old.Guo jing is a male employee aged 21.This is Huang Rong who is 19 years old.Huang Rong is a femal employee age 19.Huang Qigong is a male executive.Huang Qigong is a male employee aged 56./#include stdafx.h#include #include using namespace std;class Personpublic:Person():name( ),gender(f),age (0)Person(string theName,char theGender,int theAge):name(theName),gender(theGender),age(theAge)void who() const;pro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论