返回介绍

第 12 章 类和动态内存分配

发布于 2024-10-08 23:14:09 字数 831 浏览 0 评论 0 收藏 0

本章内容包括:

  • 对类成员使用动态内存分配。
  • 隐式和显式复制构造函数。
  • 隐式和显式重载赋值运算符。
  • 在构造函数中使用 new 所必须完成的工作。
  • 使用静态类成员。
  • 将定位 new 运算符用于对象。
  • 使用指向对象的指针。
  • 实现队列抽象数据类型(ADT)。

本章将介绍如何对类使用 new 和 delete 以及如何处理由于使用动态内存而引起的一些微妙的问题。这里涉及的主题好像不多,但它们将影响构造函数和析构函数的设计以及运算符的重载。

来看一个具体的例子——C++如何增加内存负载。假设要创建一个类,其一个成员表示某人的姓。最简单的方法是使用字符数组成员来保存姓,但这种方法有一些缺陷。开始也许会使用一个 14 个字符的数组,然后发现数组太小,更保险的方法是,使用一个 40 个字符的数组。然而,如果创建包含 2000 个这种对象的数组,就会由于字符数组只有部分被使用而浪费大量的内存(在这种情况下,增加了计算机的内存负载)。但可以采取另一种方法。

通常,最好是在程序运行时(而不是编译时)确定诸如使用多少内存等问题。对于在对象中保存姓名来说,通常的 C++方法是,在类构造函数中使用 new 运算符在程序运行时分配所需的内存。为此,通常的方法是使用 string 类,它将为您处理内存管理细节。但这样您就没有机会更深入地学习内存管理了,因此这里将直接对问题发起攻击。除非同时执行一系列额外步骤,如扩展类析构函数、使所有的构造函数与 new 析构函数协调一致、编写额外的类方法来帮助正确完成初始化和赋值(当然,本章将介绍这些步骤),否则,在类构造函数中使用 new 将导致新问题。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文