收藏 分享(赏)

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

上传人:精品资料 文档编号:10338288 上传时间:2019-10-31 格式:DOC 页数:10 大小:57.50KB
下载 相关 举报
郑州大学《面向对象程序设计》课程作业.doc.doc_第1页
第1页 / 共10页
郑州大学《面向对象程序设计》课程作业.doc.doc_第2页
第2页 / 共10页
郑州大学《面向对象程序设计》课程作业.doc.doc_第3页
第3页 / 共10页
郑州大学《面向对象程序设计》课程作业.doc.doc_第4页
第4页 / 共10页
郑州大学《面向对象程序设计》课程作业.doc.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

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

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

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

6、,原来含义保持不变6、什么是模板?答 : 模板把函数或类要处理的数据类型参数化,表现为参数的多态性。模板用于表达逻辑结构相同,且具体数据元素类型不同的数据对象的通用行为,从而使得程序可以从逻辑功能上抽象,把被处理的对象(数据)类型作为参数传递二) 、分析下面的代码,回答问题(每题 10 分,共 40 分)1下面程序的执行结果是什么?为什么?class BC public:BC( ) cout fc();delete p;答:因为构造函数先调用基类,然后子类。而析构先调用子类,然后基类,所以输出: B b; 输出 In class base (先调用基类构造函数 ),然后输出 In class

7、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(基类的析构函数) 程序结束: 输出 Destructing B object,然后输出 Destructing base objec

8、t三) 、根据要求编写完整的程序:(每题 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 public: float Add(float x,float y)

9、return x + y; ;class three : public base private: float z; public:float Add(float x,float y) return x + y; ;int main() tow m; base * wo = float value = wo.Add(5.3 , 9.5); coutvalueendl; three m1; wo = 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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报