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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

郑州大学《面向对象程序设计》课程作业doc.docx

1、郑州大学面向对象程序设计课程作业doc郑州大学现代远程教育 面向对象程序设计课程考核要求说明:本课程考核形式为提交作业,完成后请保存为WORD格式的文档,登陆学习平台提交,并检查和确认提交成功。一 作业要求1.请独立自主完成作业内容。二 作业内容一)、简答题:(每题 5 分,共30 分)1、声明类的一般格式是什么? 答:声明一个类一般格式为: class CStudent public: protected: private: ;2. 类的定义层次如下图所示。请问生成类G的对象时构造函数调用的顺序是怎样的? 答:如果继承顺序是从左到右的话,那么结果为:A C D E A B F G3、类成员的

2、访问权限有哪些? 答:成员的访问权限如下:Public: 任何人,尤其是那些要使用这个类库的客户程序员,都能访问那个紧跟在public 后面声明的成员。 默认的package: 在同一个目录里面的文件,并且都没有明确指明它是属于哪个package 的。Java 会认为这类文件是属于这个目录的“默认package”的,因此对这个目录里边的其它文件来说,它们就都是package 权限的了。 private: 除非是用这个类(包含这个成员的类)的方法,否则一律不得访问。package 里的其它类也不能访问private 成员。一个package很可能是由好几个人合作开发的,因此private 能让你

3、根据自己的需要修改那些成员,而不用担心这么做会不会对别的类产生影响。 protected: package 里面的类,那么你只能访问原先那个package 的public 成员。(当然如果是在同一个package 里面继承的话,那么你还可以访问package 权限的成员。)有时基类的创建者会希望派生类能访问某个成员,而其它类则不能访问。这就是protected 要做的。protected 也赋予成员package 权限也就是说,同一个package 里的其它类也可以访问protected 元素。 为了让代码显得更有条理,可能你选用这种风格,就是将public 成员都放在类的开头,接下来是pro

4、tected 成员,然后是package 权限的,最后是private 成员。这样做的好处就是,当用户从上到下 读代码的时候,会先看到对他们最重要的东西(就是能在文件以外访问的public 成员)。而当他们遇到非public 成员的时候,就会知道这是类的内部实现部分,是无法读到的。4. 友元关系具有什么特点? 答: 友元关系有如下特点: 第一、友元函数可以直接通过对象名访问类的私有和保护成员,可以像普通函数一样在任何地方调用。 不是该类的成员函数,可以是一个普通的函数,也可以是其他类的成员函数。 (朋友虽然不是家庭的成员,但容许到我们家里访问一样) 第二、友元函数不属于任何类,因此可以放在类说

5、明的任何位置,既可以在public区,也可以在private区。 (友元函数看看作是类的部分接口,建议出现在public的部分) 第三、友元函数不需要通过对象或对象指针来调用,可以直接调用即可。5. 定义重载运算符函数的时候需要注意哪些问题? 答:不能改变运算符的优先级。 不能改变运算符的结合性(例如,算术运算符的结合性为从左到右,这一点不能改变)。 默认参数不能喝重载的运算符一起使用,也就是说,在设计运算符重载成员函数时不能使用默认参数。 不能改变运算符的操作数的个数。 不能创建新的运算符,只有已有运算符可以被重载。 运算符作用于C+内部提供的数据类型时,原来含义保持不变6、什么是模板? 答

6、 : 模板把函数或类要处理的数据类型参数化,表现为参数的多态性。模板用于表达逻辑结构相同,且具体数据元素类型不同的数据对象的通用行为,从而使得程序可以从逻辑功能上抽象,把被处理的对象(数据)类型作为参数传递二)、分析下面的代码,回答问题(每题 10 分,共 40 分)1下面程序的执行结果是什么?为什么?class BC public: BC( ) cout BC constructorn; BC( ) cout BC destructorn; ;class DC : public BC public: DC( ) cout DC constructorn; DC( ) cout DC dest

7、ructorn; ;int main( ) DC d; return 0;答: 执行结果是: BCconstructornDCconstructornDCdestructornBCdestructorn创建子类对象首先创建基类对象调用基类构造函数,然后调用自己的构造函数,释放时先析构自己对象最后析构父类对象,有父才有子。2. 下面程序的执行结果是什么?为什么?class Sampleint n;public:Sample();Sample(int i)n=i;Sample & operator=(Sample);void disp()coutn=nendl;Sample &Sample:ope

8、rator=(Sample s)Sample:n=s.n;return *this;void main()Sample s1(10),s2; s2=s1; s2.disp();答:结果: n=10 。原因是Sample重载了赋值操作符,可以用Sample的一个对象去初使化另一个对象,s2对象被已经初始化的s1所初始化。3. 下面程序的执行结果是什么?为什么?class Samplepublic:int x;int y;void disp() coutxyendl; ;void main()int Sample:*pc;Sample s;pc=&Sample:x;s.*pc=10;pc=&Sam

9、ple:y;s.*pc=20;s.disp(); 答:本程序执行的结果是x=10,y=20。 原因是在main()中定义的pc是一个指向Sample类数据成员的指针。执行pc=&Sample:x 时,pc指向数据成员x, 语句s.*pc=10等价于s.x=10(为了保证该语句正确执行,Sample类中的x必须是公共成员); 执行pc=& amp;Sample:y时,pc指向数据成员y,语句s.*pc=20等价于s.y=20(同样,Sample类中的y必须是公共成员)。所以输出 为: x=10,y=20。4. 下面程序的执行结果是什么?为什么?class basepublic:base()fc(

10、);virtual void fc() coutIn class baseendl; virtual base() =0 coutDestructing base objectendl;class A: public basepublic:A() fc();void f() fc(); A() fd(); void fd() ;class B: public Apublic:B();void fc() coutIn class Bendl;B() fd();void fd() cout Destructing B objectfc();delete p; 答:因为构造函数先调用基类,然后子类。

11、而析构先调用子类,然后基类,所以输出: B b; 输出In class base (先调用基类构造函数),然后输出In class base(派生类A的构造函数),而B的构造函数没有额外输出。 b.fc(); 输出In class B base *p=new A; 输出In class base (先调用基类构造函数),然后输出In class base(派生类A的构造函数) p-fc(); 输出In class base(派生类的输出),因子类A没有覆盖基类的fc() delete p; 因A析构没有做事,输出Destructing base object(基类的析构函数) 程序结束: 输出

12、Destructing B object,然后输出Destructing base object三)、根据要求编写完整的程序:(每题15分,共 30 分)1. 编写一个程序,设计一个base基类,它有两个私有数据成员x和y以及一个虚函数add(),由它派生出two类和three类,后者添加一个私有数据成员z,在这些派生类中实现add成员函数,并用数据进行测试。答:设计的程序如下: class base private: float x; float y; public: virtual float Add(float,float); ;class two : public base publi

13、c: float Add(float x,float y) return x + y; ;class three : public base private: floatz; public: float Add(float x,float y) return x + y; ; int main() tow m; base * wo = &m; float value = wo.Add(5.3 , 9.5); coutvalueendl; three m1; wo = &m1 ; float value = wo.Add(5.3 , 9.5); coutvalueendl 2. 编写一个程序,设计一个点类Point,并由此派生出一个圆类。并用数据进行测试,计算圆的面积和周长。答 : 程序如下: #define PAI 3.1415926 class point public: virtual float air(float R) virtual float lang(float R) ; class yuan :public point public: float air(float R) return PAI * R * R; float lang(float R) return PAI * 2 * R

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

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