欢迎来到天天文库
浏览记录
ID:50852924
大小:58.50 KB
页数:16页
时间:2020-03-15
《DYc类与对象习题答案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.概念填空题1.1类定义的关键字是class。类的数据成员通常指定为私有成员。类的函数成员通常指定为公有成员,指定为公有的类成员可以在类对象所在域中的任何位置访问它们,类的私有和保护只能被该类的成员函数或友元函数访问。1.2类的访问限定符包括public、private和protected。类成员默认的访问方式是private。访问限定符在类中无先后次序,各限定符允许(允许/不允许)多次出现。1.3构造函数的任务是建立对象。类中可以有多个构造函数,它们由参数区分。如果类说明中没有给出构造函数,则C++编译器会提供构造函数,该函数不完成(完成/不完成)对象初始化工作。1.4复制构造函数的参
2、数是对象的复制,当程序没有给出复制构造函数时,编译系统会提供默认复制构造函数,完成类对象的复制。复制构造函数被调用情况有3种。1.5析构函数在对象释放时被自动调用。类中没有定义析构函数时,编译系统会提供一个默认的析构函数。该函数不完成(完成/不完成)具体对象的清理工作。2.简答题2.1为什么说类与对象的概念是客观世界的反映?答:客观世界的事物都具有某些属性和行为(或操作),具有相同属性和行为的事物可以归属于一类,用分类的方法可以提高认识事物的效率。C++中定义的类则是通过抽象的方法将某一类事物共有的静态特征(属性)和动态特征(行为)概括出来并加以描述,而对象是类的具体实现,所以说类与对象的
3、概念是客观世界的反映。2.2简单解释什么是面向对象程序设计的封装性。答:对象是一个封装体,在其中封装了该对象所具有的属性和操作。对象作为独立的基本单元,实现了将数据和数据处理相结合的思想。此外,封装特性还体现在可以限制对象中数据和操作的访问权限,从而将属性“隐藏”在对象内部,对外只呈现一定的外部特性和功能。封装性增加了对象的独立性,C++通过建立数据类型——类,来支持封装和数据隐藏。一个定义完好的类一旦建立,就可看成完全的封装体,作为一个整体单元使用,用户不需要知道这个类是如何工作的,而只需要知道如何使用就行。另一方面,封装增加了数据的可靠性,保护类中的数据不被类以外的程序随意使用。这两个
4、优点十分有利于程序的调试和维护。2.3引用作为函数参数时为什么能实现两个实参之间的数据交换?为什么对应实参不能为引用?为什么返回值为引用的函数可以作为左值?答:引用变量是其关联变量的别名,二者在内存中占据同一个存储单元。在一个以引用作为参数的函数中,交换两个参数的值,实际上就是交换两个实参的值。如果函数的参数是引用,调用时需要取得实参的地址,而实参如果已经是一个地址,再进行引用将产生错误,故对应实参不能为引用。函数返回引用实际是指明(返回)了相应的关联变量,所以声明返回值为引用的函数实际上是将关联变量作为左值参与运算。2.4什么是默认的构造函数?默认的构造函数可以有多少个?答:默认构造函数
5、就是在没有显式提供初始化式时调用的函数。最多可以有一个。2.5为什么在友元函数的函数体内访问对象成员时,必须用对象名加运算符“.”再加对象成员名?答:友元函数不是类的成员函数,在函数体中访问对象的成员,必须用对象名加运算符“.”加对象成员名。这一点和一般函数一样。2.6类的静态数据成员与函数中的静态成员有何异同?答:类的静态成员为其所有对象共享,不管有多少对象,静态成员只有一份存于公用内存中,为该类所有对象公用。函数中的静态变量也位于公用内存中,不随函数调用而重新分配,所以总是保留上次进入并执行该函数后留下的信息。2.7类的成员函数在什么情况下应该定义为私有的?这样做的目的是什么?答:除接
6、口函数和创建本类对象的构造函数和撤消该对象的析构函数外。其余成员函数应该定义为私有的,这是开发类时故意对外隐蔽起来的操作,而这些往往是最复杂最关键的部分。类中故意的隐藏也为以后的升级扩展留下了余地,只要接口不变,内部再变,也不必修改原来的程序,就象MFC(微软基础类)升级后,由MFC底层类所编的程序完全不必修改,自动升级。2.8友元关系有何性质?友元关系的优点和缺点各有哪些?答:友元是C++提供的一种破坏数据封装和数据隐藏的机制。通过讲一个模块声明为另一个模块的友元,一个模块能够引用到另外一个模块中本是被隐藏的信息,可以使用友元函数和友元类。为了确保数据的完整性,及数据封装与隐藏的原则,建
7、议尽量不使用或少使用友元。3.选择题3.1数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是(B)。A.类B.对象C.函数体D.数据块3.2类的实例化是指(B)。A.定义类B.创建类的对象C.指明具体类D.调用类的成员3.3下列说法中正确的是(B)。A.类定义中只能说明函数成员的函数头,不能定义函数体B.类中的函数成员可以在类体中定义,也可以在类体之外定义C.类中的函数成员在类体之外定义时必
此文档下载收益归作者所有