2011-2012-1学期 c++第7章-类和对象2-习题学生-20110921
- 格式:ppt
- 大小:375.00 KB
- 文档页数:17
C程序设计(第2版)第七章习题解答第七章动态内存分配习题一、基本概念与基础知识自测题7.1 填空题7.1.1 C/C++定义了4个内存区间:(1)、(2)、(3)和(4)。
答案:(1)代码区,存放程序代码;(2)全局变量与静态变量区,存放全局变量或对象(包括静态);(3)局部变量区即栈(stack)区,存放局部变量;(4)自由存储区(free store),即动态存储区或堆(heap)区。
7.1.2 静态定义的变量和对象用标识符命名,称为(1);而动态建立的称为(2),动态建立对象的初始化是通过(3)实现(4)。
答案:(1)命名对象(2)无名对象(3)初始化式(initializer)(4)显式初始化7.1.3 在用new运算符建立一个三维数组15*30*10时,使用了(1)个下标运算符,对应的用delete运算符注销这个三维数组时使用了(2)个下标运算符。
new返回的指针是指向(3)的指针。
答案:(1)3个(2)1个(3)30行10列的2位数组7.1.4 当动态分配失败,系统采用(1)来表示发生了异常。
如果new返回的指针丢失,则所分配的自由存储区空间无法收回,称为(2)。
这部分空间必须在(3)才能找回,这是因为无名对象的生命期(4)。
答案:(1)返回一个空指针(NULL)(2)内存泄漏(3)重新启动计算机后(4)并不依赖于建立它的作用域7.1.5 按语义的默认复制构造函数和默认复制赋值操作符实现的复制称为(1),假设类对象obj中有一个数据成员为指针,并为这个指针动态分配一个堆对象,如用obj1按成员语义拷贝了一个对象obj2,则obj2对应指针指向(2)。
答案:(1)浅拷贝(2)同一个堆对象7.1.6 单链表的结点包含两个域:(1)和(2)。
使用链表的最大的优点是(3),即使是动态数组也做不到这一点。
答案:(1)数据域(2)指针域(3)用多少空间,开多少空间7.1.7 进入单链表必须通过单链表的(1),如果它丢失则(2),内存也(3),在单链表中进行的查找只能是(4)。
类与对象作业1_2012_参考答案1.类的定义类的成员包括–数据成员与成员函数类定义的三种形式–声明与实现不分离,写在{}内–声明与实现分离,放在同⼀个⽂件中–声明与实现分离,放在两个⽂件中类声明:放在头⽂件中,命名:类名.h,包含:–数据成员的定义–成员函数的原型说明语句类实现:放在源程序⽂件中,命名:类名.cpp,包含:–成员函数的定义:要在每个成员函数的函数名前加:类名::–增加⽂件包含命令,包含类声明⽂件,如:#include”circle.h”2.类的使⽤编写main 函数–放在源程序⽂件中,命名:test.cpp–增加⽂件包含命令,包含类声明⽂件,如:#include”circle.h”–创建对象–测试各个成员函数,形式为对象名.公有成员函数名(实参表)类与对象1_2012_参考答案4-1.编写圆类Circle,包含:⼀个名为radius的double型数据成员,表⽰圆形的半径。
数据成员的获取函数getRadius和设置函数setRadius。
⼀个名为getArea()的函数,返回圆形的⾯积。
⼀个名为getPerimeter()的函数,返回圆形的周长编写⼀个测试程序,它创建2个Circle类对象,将第⼀个圆形的半径设置为2.5,第2个圆形的半径设置为3.5,并输出两个圆形对象的半径、⾯积和周长。
//以下为Circle类的声明部分:circle.hclass Circle{public:double getArea();double getPerimeter();double getRadius();void setRadius(double);private:double radius;};//以下为Circle类的实现部分: circle.cpp#include"circle.h"double Circle::getArea(){return 3.14*radius*radius;}double Circle::getPerimeter(){return 2*3.14*radius;}double Circle::getRadius(){return radius;}void Circle::setRadius(double r){radius=r;}//测试Circle类以下为test.cpp#include "circle.h"#includevoid main(){Circle a,b; //创建两个对象,对象名分别为a,b cout<<"radius="<cout<<"radius="<a.setRadius (2.5); //将a对象的radius成员设置为2.5b.setRadius (3.5); //将b的radius成员设置为3.5cout<cout<<"radius="<cout<<"area="<cout<<"perimeter="<cout<cout<<"radius="<cout<<"area="<cout<<"perimeter="<}4-2.编写圆柱体类Cylinder,包含:名为radius的double型数据成员,表⽰圆的半径,名为height的double型数据成员,表⽰⾼。
【章节】第1章 C++基础知识【知识点】1、 C++程序的构成与书写形式;2、基本数据类型,常量、变量和表达式3、 C++的标准输入输出【单选题】1、在C++中,源程序变为可执行程序的正确顺序应该是( ) 。
A. 编辑、链接、编译、执行B. 编辑、编译、链接、执行C. 编译、编辑、链接、执行D. 编译、链接、编辑、执行答案:B2、要把高级语言编写的源程序转换为目标程序,需要使用( ) 。
A. 编辑程序B. 驱动程序C. 调试程序D. 编译程序答案:D3、下列关于C++与C语言的关系描述中,错误的是( ) 。
A. C语言是C++语言的一个子集B. C++与C语言是兼容的C. C++对C语言进行了一些改进D. C++和C语言都是面向对象的答案:D4、下面为使用面向对象语言的正确理由是( ) 。
A. 面向对象程序由三种基本结构组成,分别是顺序结构、选择结构和循环结构B. 程序语句比面向过程语言简单C. 面向对象程序设计可以设计为自行修改错误D. 面向对象程序很容易概念化答案:D5、以下选项中,合法的用户标识符是( ) 。
A. longB. _2TestC. 3DmaxD. A.dat答案:B6、下列描述中正确的是( ) 。
A. 不是每个C++程序都必须包含预处理命令#includeB. C++程序必须有return 语句C. C++程序中的变量必须定义在主程序内部D. C++程序中所使用的符号常量可以不进行定义答案:A7、C++源程序文件的扩展名为( ) 。
B. .CC. .DLLD. .EXE答案:A8、cout是I0流库预定义的( ) 。
A. 类B. 对象C. 包含文件D. 常量答案:B9、 C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是( ) 。
A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型D. 引进了类和对象的概念答案:D10、下列选项中,( ) 是不合法的标识符.A. ProgramB. Obj23C. doubleD. B_C_D答案:C11、下列标识符中,不合法的用户标识符为( ) 。
第7章类与对象7-1. 教学目的与要求1.理解类、类的成员、类的对象等概念;并掌握类、类的成员的定义方法及类对象的创建方法;2.理解构造函数和析构函数的概念,掌握构造函数和析构函数定义方法,掌握构造函数的各种使用方法;3.理解对象成员的概念,掌握对象成员的初始化方法;4.掌握coust对象、 coust成员函数和coust成员数据的使用;5.掌握友元函数的定义和使用;7-2.主要内容及重点:本章主要介绍类的定义和使用以及类中各种特殊类型的成员的定义及用法,包括类及其成员的定义、对象的创建和使用、*this指针,成员函数、构造函数、析构函数、对象成员、友员、静态成员等。
类是面向对象系统中最重要要的概念,面向对象程序设计中的所有操作都可归结为对类的操作。
类是实现C++面向对象程序设计的基础,是软件开发方法发展的必然产物。
本章的重点是:类的定义和使用,以及各种类型的成员数据的定义和使用,各种类型的成员函数的定义和使用,构造函数和析构函数,友元函数等。
本章的难点是:构造函数的两类特殊用途、const对象和const成员、静态7-3. 第7章类与对象-课件3-4. 第7章类与对象-复习总结本章首先介绍了类和对象的基本概念和特性,使初学者对类有了一个总体的认识。
类是面向对象程序设计的基础。
在进行面向对象程序设计时,必须习惯于将事物或问题的描述抽象为类。
类是对某一类事物的描述。
类中包含了数据成员和成员函数。
它们表现了该类所具有的属性(数据)和操作(函数)。
类的一个实例称为对象。
对象是具有类类型的变量。
对象中的公有成员函数是对象与外界进行信息交换的唯一接口。
其次进一步学习了类中各种类型成员的定义及使用。
1.类的成员函数与一般函数一样,函数的参数可以具有默认值,并可以进行函数的重载。
但成员函数具有类的作用域,即只能通过类的对象访问其公有成员函数。
2.在创建对象时,自动调用类的构造函数,因此构造函数提供了对成员函数进行初始化的一种手段。