- 内容提要
- 前言
- 第 1 章 预备知识
- 第 2 章 开始学习 C++
- 第 3 章 处理数据
- 第 4 章 复合类型
- 第 5 章 循环和关系表达式
- 第 6 章 分支语句和逻辑运算符
- 第 7 章 函数——C++的编程模块
- 第 8 章 函数探幽
- 第 9 章 内存模型和名称空间
- 第 10 章 对象和类
- 第 11 章 使用类
- 第 12 章 类和动态内存分配
- 第 13 章 类继承
- 第 14 章 C++中的代码重用
- 第 15 章 友元、异常和其他
- 第 16 章 string 类和标准模板库
- 第 17 章 输入、输出和文件
- 第 18 章 探讨 C++新标准
- 附录 A 计数系统
- 附录 B C++保留字
- 附录 C ASCII 字符集
- 附录 D 运算符优先级
- 附录 E 其他运算符
- 附录 F 模板类 string
- 附录 G 标准模板库方法和函数
- 附录 H 精选读物和网上资源
- 附录 I 转换为 ISO 标准 C++
- 附录 J 复习题答案
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第 12 章 类和动态内存分配
本章内容包括:
- 对类成员使用动态内存分配。
- 隐式和显式复制构造函数。
- 隐式和显式重载赋值运算符。
- 在构造函数中使用 new 所必须完成的工作。
- 使用静态类成员。
- 将定位 new 运算符用于对象。
- 使用指向对象的指针。
- 实现队列抽象数据类型(ADT)。
本章将介绍如何对类使用 new 和 delete 以及如何处理由于使用动态内存而引起的一些微妙的问题。这里涉及的主题好像不多,但它们将影响构造函数和析构函数的设计以及运算符的重载。
来看一个具体的例子——C++如何增加内存负载。假设要创建一个类,其一个成员表示某人的姓。最简单的方法是使用字符数组成员来保存姓,但这种方法有一些缺陷。开始也许会使用一个 14 个字符的数组,然后发现数组太小,更保险的方法是,使用一个 40 个字符的数组。然而,如果创建包含 2000 个这种对象的数组,就会由于字符数组只有部分被使用而浪费大量的内存(在这种情况下,增加了计算机的内存负载)。但可以采取另一种方法。
通常,最好是在程序运行时(而不是编译时)确定诸如使用多少内存等问题。对于在对象中保存姓名来说,通常的 C++方法是,在类构造函数中使用 new 运算符在程序运行时分配所需的内存。为此,通常的方法是使用 string 类,它将为您处理内存管理细节。但这样您就没有机会更深入地学习内存管理了,因此这里将直接对问题发起攻击。除非同时执行一系列额外步骤,如扩展类析构函数、使所有的构造函数与 new 析构函数协调一致、编写额外的类方法来帮助正确完成初始化和赋值(当然,本章将介绍这些步骤),否则,在类构造函数中使用 new 将导致新问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论