习题三(带答案)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

习题三一、填空题1、在类继承中,默认的继承方式是()。2、对于派生类的构造函数,在定义对象时构造函数的调用顺序为:先执行()、再执行(),最后执行()。多重继承方式下,处于同一层次的基类构造函数的执行顺序由派生类的()。顺序决定。3、在动态关联中,被调用函数是在()阶段确定的。在静态关联中,被调用函数是在()阶段确定的。4、消除继承中的二义性的两种方法分别是:()和()。5、C++中引进虚基类的目的是:()。6、抽象类是指()。7、抽象类不能定义(),但可以定义()和()。8、不允许是虚函数的类的成员函数是()。9、若在派生类构造函数的成员初始化列表中出现了虚基类和非虚基类的构造函数的调用,则它们的执行顺序是:先执行()的构造函数,再执行()的构造函数。10、在C++中,一个名字可具有多种语义的特性称为(多态性)。11、在C++语言中,派生类继承了基类的全部数据成员和除()之外的全部函数成员。12、在公有继承关系下,派生类的对象可以访问基类中的()成员,派生类的成员函数可以访问基类中的()成员。13、在保护继承关系下,基类的公有成员和保护成员将成为派生类中的()成员,它们只能由派生类的()来访问,基类的私有成员将成为派生类中的()成员。14、在私有继承关系下,基类的公有成员和保护成员将成为派生类中的()成员,它们只能由派生类的()来访问,基类的私有成员将成为派生类中的()成员。15、继承具有(),即当基类本省也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。16、虚函数应该在()中声明,且不能在派生类中重新定义。17、纯虚函数是()。18、在析构函数前面加上关键字()进行说明,称该析构函数为虚析构函数。19、对虚函数的调用有两种方式:()和()。20、有一种特殊的虚函数,重定义时不要求同名,这种虚函数是()。1、private(或私有继承)2、基类的构造函数、子对象的构造函数、派生类本身的构造函数(对基类的)继承顺序3、(程序)运行(程序)编译4、使用作用域运算符::指明其继承的途径,使用虚基类5、消除继承中的二义性6、含有纯虚(成员)函数的类;7、对象,对象指针,对象引用8、构造函数9、虚基类、非虚基类10、多态性11、构造函数和析构函数12、公有,公有和保护13、保护,成员函数,不可访问14、私有,成员函数,不可访问15、传递性16、基类17、只有函数声明而没有具体函数功能实现的虚函数。18、virtual19、指针调用,对象调用20、虚析构函数二、选择题1、对于下面类定义的叙述中正确的是(C)classA{public:virtualvoidfunc1(){}voidfunc2(){}};classB:publicA{public:voidfunc1(){coutclassBfunc1endl;}virtualvoidfunc2(){coutclassBfunc2endl;}};A.A::func2()和B::func1()都是虚函数B.A::func2()和B::func1()都不是虚函数C.B::func1()是虚函数,而A::func2()不是虚函数D.B::func1()不是虚函数,而A::func2()是虚函数2、设有基类定义:classBase{private:inta;protected:intb;public:intc;};派生类采用()继承方式可以使成员变量b成为自己的私有成员。A.公有继承B.保护继承C.私有继承D.私有、保护、公有均可3、基类中的()不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了开放的接口。A.公有成员B.私有成员C.私有成员函数D.保护成员4、建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(子对象的构造函数)和c(派生类的构造函数),这3种构造函数的调用顺序为()。A.abcB.acbC.cabD.cba5、阅读以下程序classA{intx;public:A(intxx){x=xx;}};classB:publicA{inty;public:B(intxx,intyy);};对构造函数B的定义中,正确的是()A、B::B(intxx,intyy):A(xx),B(yy){}B、B::B(intxx,intyy):x(xx),B(yy){}C、B::B(intxx,intyy):A(xx),y(yy){}D、B::B(intxx,intyy):x(xx),y(yy){}6、在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回类型()A、不同B、部分相同C、完全相同D、没有要求7、下列关于类的继承描述中,()是正确的。A、派生类可以访问基类的所有数据成员,调用基类的所有成员函数B、派生类也是基类,所以基类具有派生类的全部属性和方法C、继承描述类的层次关系,派生类不可以具有与基类相同的属性和方法D、一个基类可以有多个派生类,一个派生类可以有多个基类8、当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的()。A、public成员B、private成员C、protected成员D、友员9、下面描述中,错误的是()。A、在基类定义中的public成员在公有继承的派生类中可见,也能在类外被访问B、在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问C、在基类定义的public和protected成员在保护继承的派生类中可见D、在派生类中不可见的成员要变成可访问的需要进行访问声明10、在创建派生类对象时,构造函数的执行顺序是()。A、子对象构造函数、基类构造函数、派生类本身的构造函数B、派生类本省的构造函数、基类构造函数、对象成员构造函数C、基类构造函数、派生类本身的构造函数、对象成员构造函数D、基类构造函数、对象成员构造函数、派生类本省的构造函数11、当不同的类具有相同的间接基类时,具有的特点是()。A、各派生类对象中不存在基类版本B、派生类对象无法产生自己的基类版本C、为了建立惟一的间接基类版本,应该改变继承方式D、为了建立惟一的间接基类版本,应该声明虚基类12、带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象进行初始化有()。A、一次B、两次C、多次D、与虚基类下面的派生类个数有关13、下面关于派生类的描述中,正确的是()。A、派生类的默认继承方式是保护的B、一个派生类不可以作为另一个派生类的基类C、派生类只继承了基类的公有成员和保护成员D、一个派生类可以有多个基类14、实现运行时的多态性要使用()。A.重载函数B.构造函数C.析构函数D.虚函数15、如果一个类至少有一个纯虚函数,那么该类称为()。A.虚基类B.派生类C.抽象类D.以上都不对16、下列描述中,()是抽象类的特征。A.可以说明虚函数B.可以进行构造函数重载C.可以定义友元D.不能说明其对象17、下列关于虚函数的描述中,()是正确的。A.虚函数是一个非成员函数B.虚函数是一个静态成员函数C.派生类的虚函数与基类种对应的虚函数具有相同的参数个数和类型D.虚函数既可以在函数说明时定义,也可以在函数实现时定义18、下列关于纯虚函数与抽象类的描述中,()是错误的。A.抽象类是指具有纯虚函数的类B.纯虚函数是一个特殊的虚函数,它没有具体的实现C.一个基类中说明具有纯虚函数,该基类的派生类一定不再是抽象类D.抽象类只能作为基类来用,其纯虚函数的实现由派生类给出19、下列各函数的说明中,()表示纯虚函数。A.virtualintvf(int);B.voidvf(int)=0;C.virtualvoidvf()=0;D.virtualvoidvf(int){}20、虚函数必须是类的()。A.友元函数B.构造函数C.析构函数D.成员函数21、下列关于虚函数的描述中,()是正确的。A.虚函数不能声明为另一个类的友元函数B.虚函数不能声明为静态成员函数C.派生类必须重新定义基类的虚函数D.如果在重定义虚函数时使用了保留字virtual,则该重定义函数仍然是虚函数22、多态调用是指()。A.以任何方式调用一个虚函数B.以任何方式调用一个纯虚函数C.借助于指向对象的基类指针或引用调用一个虚函数D.借助于指向对象的基类指针或引用调用一个纯虚函数23、在C++中,要实现动态联编,必须使用()调用虚函数。A.类名B.派生类指针C.对象名D.基类指针24、下列函数中,可以作为虚函数的是()。A.普通函数B.构造函数C.友元函数D.析构函数25、下面描述中,正确的是()。A.虚函数是没有实现的函数B.纯虚函数的实现只能在直接派生类中定义C.抽象类是只有纯虚函数的类D.抽象类指针可以指向不同的派生类1、C2、C3、D4、A5、C6、C7、D8、A9、B10、D11、D12、A13、D14、D15、C16、D17、C18、C19、C20、D21、A22、C23、D24、D25、D三判断题1、派生类中继承的基类成员的访问权限在派生类中保持不变。2、在基类定义的public和protected成员在保护继承的派生类中可见。3、当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的保护成员。4、一个基类可以有多个派生类,一个派生类可以有多个基类。5、基类的构造函数和析构函数可以被派生类继承。6、派生类也是基类,所以基类具有派生类的全部属性和方法。7、当不同的类具有相同的间接基类时,为了建立惟一的间接基类版本,应该声明虚基类。8、构造函数可以作为虚函数使用。9、虚函数是没有实现的函数。10、在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数返回值部分相同。11、抽象类是只有纯虚函数的类。12、纯虚函数是一个特殊的虚函数,它没有具体的实现。13、虚函数的声明需要使用关键字protected。14、设置虚函数的目的是为了消除二义性。15、抽象类只能作为基类使用,其纯虚函数的实现由派生类来完成。1、×2、√3、×4、√5、×6、×7、√8、×9、×10、×11、×12、√13、×14、×15、√四、程序分析题(写程序运行结果)1.#includeiostream.h#includestring.hclassBase{public:intx;voidPrint(){coutBase::xisxendl;}};classDerived1:publicBase{public:voidPrint(){coutDerived1::xisxendl;}};classDerived2:privateBase{public:Derived2(){Base::x=4;}intx;voidPrint(){coutDerived2'sBase::xisBase::xendl;coutDerived2::xisxendl;}};voidmain(){BaseobjB;Derived1objD1;Derived2objD2;objB.x=1;objD1.x=2;objD2.x=3;objB.Print();objD1.Print();objD2.Print();}2#includeiostream.hclassbase{public:voidwho(){coutbaseclass1endl;}};classderive1:publicbase{public:voidwho(){coutderive1class2endl;}};classderive2:publicbase{public:voidwho(){coutderive2class3endl;}};voidmain(){baseobj1,*p;derive1obj2;derive2obj3;p=&obj1;p-who();p=&obj2;p-who();p=&obj3;p-who();obj2.wh

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功