- 27
- 0
- 约9.46千字
- 约 97页
- 2016-08-21 发布于重庆
- 举报
第3章详解对象
第3章详解对象 《面向对象程序设计》 第3章 详解对象 内容提要 3.1 多个同类对象信息管理的问题 3.2 对象的存储 3.3 对象指针(重点) 3.4 对象引用 3.5 共享数据的保护 3.6 对象数组(重点) 3.7 字符串对象 3.8 对象成员(重点) 提出问题 【例3-1】在例2-30工资管理程序中,主函数用重复的语句处理各位员工的信息,在实际中不可取,如何修改? 分析问题 同类变量可以组成数组,那么对象也可以建立数组。因此,可以建立一个员工信息数组,然后用循环语句来完成同样的处理。 为了解决上述问题,我们需要进一步了解对象,如对象数组及相关内容。 首先了解对象的存储。 当一个C++对象被创建时,有两件事会发生: (1)为对象分配内存。 (2)调用构造函数来初始化内存。 3.2 对象的存储 作为特殊的变量形式,对象在哪个位置被创建以及创建时为对象分配不同的内存区域决定了对象的作用域和生存期。对象的作用域与生存期的概念来源于变量的作用域与生存期。 3.2.1变量的作用域 变量有效性的范围称为变量的作用域。变量的作用域是从空间角度,即变量在程序中定义的位置角度来分析的。 归纳起来,变量有4种不同的作用域: 函数作用域 块作用域 函数原型作用域 文件作用域 文件作用域是全局的,其他三者是局部的。 从作用域角度,可以把变量分为全局变量和局部变量。 3.2.2变量的生存期 生存期是指变量在内存中存在的时间长短。是从变量值存在的时间角度来分析的。 生存期可以分为静态生存期和动态生存期。 静态生存期是指在程序运行期间,系统对变量分配固定的存储空间。 动态生存期则是在程序运行期间,系统对变量动态地分配存储空间。 生存期与存储区域密切相关。存储区分为三个部分: (1) 代码存储区,存放源代码; (2) 静态存储区,存放程序的全局数据和静态数据; (3) 动态存储区,包括栈区和堆区。包括以下数据: 1)函数形参。在调用函数时给形参分配存储空间。 2)函数中的自动变量(未加static声明的局部变量)。 3)函数调用时的现场保护和返回地址等。 4)用malloc()或new申请的内存中的数据。 【例3-2】示例变量的作用域和生存期。 #include iostream using namespace std; void f1() { int a=1,b=2; static int c; a++; b++; c++; couta b cendl; } int main() { int a=1,b=2,c=3; f1(); f1(); f1(); couta b cendl; return 0; } 3.2.3动态存储分配 堆允许程序在运行时(而不是在编译时)申请某个大小的内存空间。 3.2.3动态内存分配 分析:对于工资管理问题,我们并不能确切地知道公司的人数,如果数组声明得很大,就造成很大的浪费;如果数组声明得比较小,又影响对大量数据的处理。在C++中,动态内存分配技术可以保证程序在运行过程中按照实际需要申请适量的内存,使用结束后还可以释放。 在堆中动态分配存储空间,可以采用指针和new运算符动态地分配内存,用delete运算符释放new申请的内存空间。 new运算符从堆中分配一块与类型相适应的存储空间,若分配成功,将这块内存空间的首地址存入指针,否则置指针的值为NULL(空指针值,即0)。 delete操作符用来释放指针指向的动态存储空间。 【例3-3】指针的声明、赋值与使用。 int *iptr; //声明 int型指针 iptr int i; //声明int型数 i iptr=i; //取 i的地址赋给 iptr i=100; //int型数赋初值 coutOutput int i= i endl; //输出int型数的值 coutOutput int pointer i=*iptrendl; //输出指针所指地址的内容 new运算符 new运算符的一般格式为: 指针变量名=new 类型; 或 指针变量名=new 类型(初值); 或 指针变量名=new 类型[元素个数]; delete运算符 格式如下: delete 指针变量名 或 delete[] 指针变量名 其中,第2种格式用于释放指针指向的连续存储空间,即释放数组占用的空间。 【例3-4】示例用new获得动态存储空间。 int *a=new int; //分配堆空间并将起始地址赋给
您可能关注的文档
- 第3章网络操作系统.ppt
- 第3节乙醇的学案.doc
- 第3节细胞核系统的控制中心同步训练.doc
- 2026《关于Beta-GOS模型的研究文献综述》3300字.docx
- 2026《智能家居控制中心交互设计方法分析概述》4200字.docx
- 2026《股指期权市场现状分析概述》3100字.docx
- 2026《离子速度成像技术研究文献综述》5500字.docx
- 2026《员工视角下w酒店前厅部员工服务质量现状调查及改善研究(附问卷)》17000字.doc
- 2026《南国食品股权激励对企业业绩的影响浅析》9700字.doc
- 2026《贵州省主题酒店的发展现状、问题及对策》7900字.docx
- 2026《面向多样性的隐私保护推荐方法概述》7800字.docx
- 2026《基于PLC的智能立体停车场的控制系统设计》7200字.docx
- 2026《太赫兹技术概述》4200字.docx
- 2026《分布式电力系统经济调度研究现状国内外文献综述》2800字.docx
- 2026《曲美家具集团股份有限公司成本管理存在的问题及对策》5600字.docx
- 2026《基于肌肉信号的人体运动研究国内外文献综述》3400字.doc
- 2026《基于城市林学植物配置问题研究》7200字.docx
- 2026《社区重点人群管理平台设计与实现》7900字.docx
- 2026《区县医院内网的设计与实施研究》6900字.doc
- 2026《静电除尘的原理及高频电源的优势综述》3100字.doc
原创力文档

文档评论(0)