当前位置:首页 > C++习题
第7章 类的基本概念
课后习题注解
一、选择题
1、以下不属于类存取权限是___________。 A) public B) static C) protected D) private
【解答】答案:B,ACD均为类访问修饰符,B是普通的修饰符。 2、类的析构函数是___________时调用的。
A) 类创建 B) 创建对象 C) 引用对象 D) 释放对象
【解答】答案: D,析构函数功能是释放对象,收回资源。 3、有关构造函数的说法,不正确的是___________。
A) 对象是类的一个实例 B) 任何一个对象只能属于一个具体的类 C) 一个类只能有一个对象
D) 类与对象的关系和数据类型与变量的关系相似 【解答】答案: C ,一个类可以创建多个对象。 4、通常拷贝构造函数的参数是___________。
A) 某个对象名 B) 某个对象的成员名 C) 某个对象的引用名 D) 某个对象的指针名 【解答】答案: C ,构造函数的参数是类本身的引用。
5、假定A是一个类,那么执行语句“A a, b(3), *p;”调用了___________次构造函数。 A) 2 B) 3 C) 4 D) 5
【解答】答案: A,其中*p并没有调用构造函数,只有使用new以后,才创建对象。
二、填空题
1、假定DD是一个类,则执行“DD a[10], b(2)”语句时,系统自动调用该类构造函数的次数为___________
【解答】答案:11次
2、对于任意一个类,析构函数的个数最多为___________个。 【解答】答案:1
3、一个类的___________函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。
【解答】答案:析构函数
4、C++程序的内存格局通常分为四个区:(1)___________,该区用来存放全局变量、静态数据、常量。(2)___________,该区用来存放类成员函数、其他函数代码。(3)___________该区用来存放局部变量、函数参数、返回数据和返回地址。(4)___________。该区是自由存储区。
【解答】答案:全局数据区(data area) 代码区(code area) 栈区(stack area) 堆区 (heap area)
三、简答题与程序设计题
1、简述3种访问修饰符对类成员的访问限制。
【解答】答案:C++语言通过访问限定符public、private和protected将类成员分成三类:公有成员、私有成员和保护成员。
? 公有成员(public修饰)可以被该类的成员函数访问,也可以在程序的任意地方
被任意访问。
? 私有成员(private修饰)只能被该类的成员函数或者该类的友元函数访问。友元
是为了增加程序的灵活性而引入的概念,允许程序中的某些函数访问类中的私有成员。
? 保护成员(protected)对于派生类来说,就像是公有成员,可以被访问,对于程
序的其他部分来说,就像是私有成员,不允许被访问。
2、定义一个学生类,输入学生的姓名、语文成绩、数学成绩和英语成绩,计算并输出每位学生的各门功课的成绩、总成绩和平均成绩。
【解答】思路:设计一个类,类的数据成员包括姓名、语文成绩、数学成绩和英语成绩。类的成员函数包括算总成绩、算平均成绩和输出各门功能的成绩。
3、简述拷贝构造函数的必要性。
【解答】答案:当用一个对象值初始化一个新对象的时候,或者利用一个对象构造另一个对象的时候,要涉及到对象的拷贝,比如执行语句“person p1 = p2”或者“person p1(p2)”。这个时候p1和p2指向堆的同一内存空间,当p1调用析构函数释放堆空间以后,这个时候p2指向的地址变空了,如果p2再调用析构函数释放内存空间,将会出错。如图7-1所示。
图7-1 使用对象赋值
补充习题注解
一、选择题
1、在C++中可以把具有相同内部存储结构和相同操作的对看成属于同一类。在指定一个类后,往往把属于这个类的对象称为类的___________
A)实例 B)实物 C)特征 D)对象
【解答】答案:A,使用类创建出来的数据类型,称之为类的实例。 2、有关类的说法不正确的是___________. A)类是一个用户自定义的数据类型 B)只有类中的成员函数才能存取类中的私有数据 C)在类中,如果不作特别说明,所有的数据均为私有类型 D)在类中,如果不作特别说明,所有的成员函数均为公有类型 【解答】答案:D ,如果不特别说明,所有成员均为私有类型。 4、有关类和对象的说法下列不正确的有___________ A) 对象是类的一个实例 B)任何一个对象只能属于一个具体的类 C)一个类只能有一个对象 D)类与对象和关系和数据类型和变量的关系相似 【解答】答案:C,一个类可以创建多个对象。 5、有关构造函数的说法不正确的是___________ A) 构造函数名字和类的名字一样 B)构造函数在说明类变量时自动执行 C)构造函数无任何函数类型 D)构造函数有且只有一个 【解答】答案:D ,构造函数可以重载,可以有多个。 6、有关析构函数的说法不正确的是___________ A)析构函数有且只有一个 B)析构函数无任何函数类型 C)析构函数和构造函数一样可以有形参 D)析构函数的作用是在对象被撤消时收回先前分配的内存空间 【解答】答案:C ,析构函数没有形参。
7、在类的定义体外定义成员函数时,需要在函数名前加上___________ A)类标记 B)类域标记 C)类对象 D)域运算符 【解答】答案:B,需要加上类域运算符“::”。
8、在类的定义形式中,数据成员、成员函数和___________组成了类。 A)成员的访问控制信息 B)公有信息 C)私有信息 D)保护信息
【解答】答案:A,类的成员控制信息,也就是访问修饰符。 9、___________功能是对对象进行初始化 A)析构函数 B)数据成员 C)构造函数 D)静态成员函数
【解答】答案:C,构造函数的功能是初始化。
共分享92篇相关文档