- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
郑州大学远程教育学院2013年面向对象程序设计作业
郑州大学现代远程教育《 面向对象程序设计》课程考核要求
说明:本课程考核形式为提交作业,完成后请保存为WORD格式的文档,登陆学习平台提交,并检查和确认提交成功。
作业要求
1.请独立自主完成作业内容。
作业内容
一)、简答题:(每题 5 分,共30 分)
1、异常处理的作用是什么?
答:答:(1).try和catch语句:将要处理的代码放入try块中,然后创建相应的catch块的列表。如果生成都异常与catch中提到的相匹配,那么catch条件中的块语句就被执行。try块后可能有许多
catch块,每个都处理不同的异常。每个catch中的参数都是Exception的子类。
(2).finally语句:定义一个总是执行的代码,而不考虑异常是否被捕获。
(3).throw引起一个异常。
2、什么是容器?什么是迭代器?什么是算法?他们之间有何关系?
答:容器:容器能够通过模版的方法,装下各种类型的节点元素。
迭代器:迭代器是一种smart pointer。迭代器是一种行为类似指针的对象。迭代器所指向的对象为容器 中元素(结构体)的节点。
如定义一个class List的容器,容器的节点为ListItem,那么迭代器就应该指向(的对象)容器中的ListItem节点。
而迭代器通过重载*(解引用)运算符,从而就可以得到节点的值。通过重载operator-运算符就可以得到容器节点地址(指针)
算法:算法通过操作容器对应的迭代器,就可以间接地操作容器中的元素。而不需要关注容器的内部细节
三者之间联系:
每个容器都有专属的迭代器,而算法通过迭代器对容器中的元素进行操作。
3、什么是静态成员?有何特点?
答:在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数)。
静态成员的特点是:不管这个类创建多少个对象,其静态成员在内存中只保留一份副本,这个副本为该类的所有对象所共享。
面对对象方法中还有类属性的概念,类属性是描述类的所有对象共同特征的一个数据项对于任何对象实例,它的属性值是相同的,C++通过静态数据成员来实现类属性。
4、类的构造函数和析构函数有何特点?
答:构造函数主要用来对成员初始化和分配空间,析构函数用于执行一些清理任务,如释放分配给对象的内存空间等。
构造函数有以下特点:
(1)构造函数的名字必须与类名相同;
(2)构造函数可以有任意类型的参数,但不能具有返回类型;
(3)定义对象时,编译系统会自动地调用构造函数;
(4)构造函数是特殊的成员函数,函数体可以在类体内,也可写在类体外;
(5)构造函数被声明为公有函数,但它不能像其他成员函数那样被显式调用,它是在定义对象的同时被调用的。
析构函数有以下特点:
(1)析构函数的名字必须与类名相同,但它前面必须加一个波浪号~ ;
(2)析构函数没有参数,也没有返回值,而且不能被重载,因此在一个类中只能有一个析构函数;
(3)当撤销对象时,编译系统会自动地调用析构函数。
5、类成员的访问权限有哪些?
答:类成员的访问权限:继承有关public此成员都可公开调用;
protected 同包或对继承的类才可公开调用,静态成员也必须继承后才能调用A.a或使用public;
friendly对同包的类可以公开调用;
private只有本类实例成员方法才可调用。
6、面向对象的基本要素是什么?
答:抽象、继承、封装、多态;
二)、分析下面的代码,回答问题(每题 10 分,共 40 分)
1.下面程序的执行结果是什么?为什么?
class B{
protected:
virtual void f( ){coutBendl;}
public:
void g( ){f( );}
};
class C:public B{
protected:
void f( ){coutCendl;}
};
void main( ) {
C d;
d.g( );
}
答: 输出: C
因为创建C类型的对象调用其父类的函数g g中调用f 类中函数参数默认始终有一个this指针,这个调用的this指向的就是d对象调用g,
g中调用f产生this-f()
调用C中的f。
2.下面程序的执行结果是什么?为什么?
class A
{
public:
int n;
}
class B:public A{};
class C:public A{};
class D:public B, public C
{
int getn(){ return B::n;};
}
void main()
{
D d;
d.B::n=10;
d.C::n=20;
coutd.B::nd.C::nendl;
}
答:输出:10 20 D类是从b类和c类派
文档评论(0)