ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:19.64KB ,
资源ID:15116335      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15116335.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第六章作业内容答案Word文件下载.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第六章作业内容答案Word文件下载.docx

1、 couta=aendl; ;class Y: private X/*类定义省略*/;class Z: public X/*类定义省略*/;Y objY;Z objZ;下列语句中正确的是:( D )AobjY.setX(3);BobjY.showX();CobjZ.setX(4);DobjZ.showX(); 因为类Y,Z对X的继承方式不同,Y对X 是私有继承,Z对X 是公有继承,导致了X类的成员都是Y类的私有成员,而 X类的成员在Z类中的访问方式都和在X类中一样不变。因此,setX、showX都是Y类的私有成员,所以Y类的对象objY不能直接访问setX、showX;setX是Z类的私有成员

2、,showX是Z类的公有成员,所以Z类的对象objZ可以直接访问showX,而不能访问 setX函数;4. 有如下类定义:class A int xx;public: A():xx(0)A; A(int n):xx(n)B;class B: public A int yy; B():yy(0)coutyy; B(int n):A(n+1),yy(n) B(int m,int n):A(m),yy(n)下列选项中,输出结果为A0的语句是: AB y1(0,0); BB y2(1); CB y3(0); DB y4;要使输出结果为A0,主要看定义的派生类对象B调用的是哪一个构造函数(基类和派生类)

3、,分析构造函数: 基类构造函数中,默认构造函数输出“A”,即调用无惨构造函数 派生类构造函数中,没有给基类传递参数的是默认构造函数,且输出“0”所以,定义对象的语句一定没有参数,即B y4;5 己知表达式a+中的“+”是作为友元函数重载的运算符,则与a+等效的运算符函数调用形式为:( C ) Aa .orerator+(1); Boperator+(a); Coperator+(a, 0); Da.operator+(a, 0 );既然是友元函数,a+又是后置+运算符,所以其运算符重载函数有两个参数,一个是当前对象,一个是后置标志,多一个int类型参数。调用的形式是:a+; 或operator

4、+(a,0);所以,选择(C).其他选项:6下列函数中,不能说明为虚函数的是(C)。A私有成员函数 B公有成员函数 C构造函数 D析构函数7以下基类中的成员函数,哪个表示纯虚函数(C)。 Avirtual void vf(int); Bvoid vf(int)=0; Cvirtual void vf( )=0; Dvirtual void vf(int) 8类定义如下。class A virtual void func1( ) virtual void func2( ) public A void func1( ) cout”class B func1” virtual void func2(

5、 ) cout”class B func2”则下面正确的叙述是(A) AA:func2( )和B:func1( )都是虚函数 BA:func1( )都不是虚函数 CB:func1( )是虚函数,而A:func2( )不是虚函数 DB:func1( )不是虚函数,而A:func2( )是虚函数9C+中多态性包括两种多态性:编译时的和运行时的,前者是通过_来实现的(A)A函数和运算符的重载B类继承关系C虚函数D抽象类10下列关于虚函数的说明中,正确的是( B)。 A从虚基类继承的函数都是虚函数 B虚函数不能是静态成员函数 C只能通过指针或引用调用虚函数 D抽象类中的成员函数都是虚函数11下列运算符

6、中,_运算符不能重载为成员函数。CA赋值运算符= B函数调用运算符( ) C输出运算符 D后置+输出运算符A:func( )将(A)。 A调用类A中的函数func( ) B调用类B中的函数func( ) C根据p所指的对象类型而确定调用类A中或类B中的函数func( ) D既调用类A中函数,也调用类B中的函数二、问答题:1 是否使用了虚函数就能实现运行时的多态性?怎样才能实现运行时的多态性?答:不是。首先要在基类中定义虚函数,并在其派生类中定义重名的虚函数。派生类一定以公有方式继承了基类。实现运行时的多态性时,必须使用基类类型的指针变量或引用,使该指针指向该基类的不同派生类的对象,并通过该指针

7、指向虚函数,才能实现动态的多态性。2 为什么析构函数总是要求说明为虚函数?在基类中及其派生类中都动态分配内存空间时,必须把析构函数定义为虚函数,实现撤消对象时的多态性。根据赋值兼容规则可以用基类的指针指向派生类对象,如果由该指针撤销派生类对象,未将析构函数说明为虚函数,则会调用基类的析构函数,使对象释放不完全。因此必须将析构函数说明为虚函数,实现多态性,自动调用派生类析构函数,使得所定义的派生类对象得到完全的释放。3. 存在这样的抽象类吗?该类定义中并没有定义纯虚函数。存在这样的抽象类,该类继承的基类中定义了纯虚函数,而该类定义中没有重新定义纯虚函数,但该类继承了纯虚函数,所以该类也存在纯虚函

8、数,所以也是抽象类。4. 定义虚函数的目的是什么?定义纯虚函数有什么作用?定义虚函数的目的是实现动态多态性;作用是定义纯虚函数的目的在于基类给派生类提供一个标准的函数原型,统一接口,为实现动态多态性打下基础,派生类将根据需要给出纯虚函数的具体实现代码。三、读程序按要求做题1以下程序如果将Point类的析构函数定义为虚函数,输出结果是什么?试分析原因iostreamusing namespace std;class Point Point(float a,float b):x(a),y(b) Point()coutexecuting Point destructorprivate: float

9、x; float y;class Circle:public Pointpublic:Circle(int a,int b,int r):Point(a,b),radius(r)Circle ()coutexecting Circle destructor float radius;int main() Point*p=new Circle(2.5,1.8,4.5); delete p; return 0;原运行结果为:executing Point destructorPress any key to continue修改后运行结果为:execting Circle destructor原因

10、:指针p是指向派生类的基类指针,在不生命析构函数为虚函数时,编译器实施静态绑定,在删除基类指针时,只调用指针所属的基类的析构函数,而不调用派生类的析构函数,析构不完全,出现最初的运行结果。而将基类的析构函数声明为虚函数,删除该在指针时,就会实现动态多态性,调用该指针指向的派生类的析构函数,而派生类的析构函数又会自动调用基类的析构函数,使整个对象完全释放,出现修改后的运行结果。2找出下面程序运行结果错误的原因(未按+、-运算符的要求做),并改正。class coord int x,y; coord(int i=0,int j=0); void print(); friend coord & op

11、erator+(coord op);/coord:coord(int i,int j)x=i;y=j;void coord:print()cout x:x,y:ycoord & operator +(coord op)/ +op.x; +op.y; return op;main() coord ob(10,20); ob.print(); +ob; operator+(ob);错误在于+重载函数改变了原来的+应该实现的功能。因为+运算的实际意义是改变其作用的变量(操作数)的值,所以一定要考虑传递的参数必须被改变(即必须是传地址(指针/引用),否则就没有实现原来+的功能。因此,该程序需要修改的语句为:friend coord & 修改为: operator+(coord &op); operator +(coord op)/ 修改为: operator +(coord &op)3 读下列程序,按要求做题class B0 void display()coutB0:display()class B1:public B0void display()coutB1:class D1:public B1publi

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1