在 C++ 中将对象数组设置为 null

2024-03-20

假设我有一个 C++ 中 Foo 类型的对象数组:

Foo array[10];

在 Java 中,我可以简单地通过以下方式将此数组中的对象设置为 null:

array[0] = null //the first one

我怎样才能在 C++ 中做到这一点?


使用指针代替:

Foo *array[10];

// Dynamically allocate the memory for the element in `array[0]`
array[0] = new Foo();
array[1] = new Foo();

...

// Make sure you free the memory before setting 
// the array element to point to null
delete array[1]; 
delete array[0]; 

// Set the pointer in `array[0]` to point to nullptr
array[1] = nullptr;
array[0] = nullptr;

// Note the above frees the memory allocated for the first element then
// sets its pointer to nullptr. You'll have to do this for the rest of the array
// if you want to set the entire array to nullptr.

请注意,您需要考虑 C++ 中的内存管理,因为与 Java 不同,它没有垃圾收集器,当您设置对 nullptr 的引用时,它会自动为您清理内存。另外,nullptr 是现代且正确的 C++ 方法,因为它并不总是指针类型而不仅仅是零。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C++ 中将对象数组设置为 null 的相关文章

随机推荐

  • 如何确定我是否过度括号?

    我目前正在尝试避免 C 中的指针算术工作来编写模拟器 通常 如果您添加1对于 C 中的指针 您可以添加所指向对象的大小 但是 我正在尝试使用位和字节 因此这是不希望的 我想知道在这个例子中我是否使用了太多括号 int16 t intptr
  • hadoop namenode端口正在使用

    这实际上是一个备用 HA 名称节点 它的配置与主要和hdfs namenode bootstrapStandby已成功运行 它开始出现在配置文件中定义的标准 HTTP 端口 50070 上
  • 如何使用 List 填充数据表 [重复]

    这个问题在这里已经有答案了 如何将列表转换为数据表 Serializable public class Item public string Name get set public double Price get set public s
  • 如何使用 JAVA API 在 Elasticsearch 版本 8 中创建批量 CRUD 操作请求?

    我们想要创造索引请求 删除请求 更新请求 and 批量请求 in Elasticsearch 版本 8 using JAVA API 但我在elasticsearch v8中没有看到任何java文档官方网站 https www elasti
  • Objective C 相当于 PHP 范围函数?

    我想快速创建一个从 0 到 10000 的数字数组 但步进增量为 500 数组如下所示 0 500 1000 10000 in PHP 这是内置于range http php net manual en function range php
  • 汇总分钟到小时的需求

    我不知道我是否在这个问题的正确部分 我环顾四周并没有找到答案 所以这是我的问题 我有一个 CSV 文件 订购如下 dat lt read csv text Date Demand 01 01 2012 00 00 00 5061 5 01
  • conda.exe:加载共享库时出错:libz.so.1

    无法在我的 RHEL 机器中安装 Anaconda3 2019 10 Linux x86 64 收到错误 gt conda exe 加载共享库时出错 libz so 1 无法从共享对象映射段 不允许操作 Anaconda 或 Minicon
  • 为什么我的排除字段仍然出现在这个 Django 表单中?

    我在用着exclude在我的表单的 Meta 类中 从表单中排除我想以编程方式填写的字段 但它仍然显示在表单中 以下是代码的一些摘录 Model class Info models Model completed by models For
  • 在linux中链接信号处理程序的正确方法?

    我有几个信号处理程序用来干净地退出程序 并且我想通过链接信号处理程序调用来很好地处理任何其他吸引它们的东西 我在手册页中使用 sigaction 作为信号 表示它不再是首选 查看 sigaction 结构体 其中指定了信号掩码等 以及几个标
  • 内部使用 try catch 防止 C++ DLL 异常

    我正在开发一个 C DLL 为主应用程序分配一个数组 该函数返回错误代码 而不是指向新创建的数组的指针 因此第一个成员的地址将写入函数的参数中 例子 int foo int arrayPtr int array new int 10 arr
  • 如何打破长字符串以符合 PEP8 要求? [复制]

    这个问题在这里已经有答案了 我的项目中有很多这样的长线 但不知道如何打破它以使 PEP8 满意 PEP8 显示警告 format me id pic url http graph facebook com 0 picture width 1
  • Visual Studio 需要在 Team City Build Server 上运行 MSTest 测试吗?

    我们正在设置 Team City 构建服务器 在以前的 VS 2008 项目中 完整版本的 Visual Studio 已安装在构建服务器上 我们现在正在启动一个 VS 2010 项目 是否可以在不安装 Visual Studio 的情况下
  • 如何在 Windows 上从 GitHub Desktop 更新 git 版本

    我想用新的worktree中引入的功能git 2 5 https git scm com docs git worktree 但是 我不知道如何更新到最新版本的 GitHub Desktop notgit 本身 我安装桌面版 GitHub
  • JTable 行之间的标题

    我想知道如何实现这样的事情 row 1 row 2 HEADLINE比如 2011 年 1 月 27 日 row 3 row 4 HEADLINE比如 2011 年 1 月 28 日 row 5 这些 假 行应该只是信息行而不是真实行 我找
  • 如何在C#中获取当前产品版本?

    如何在 C 中以编程方式获取当前产品版本 My code VersionNumber System Reflection Assembly GetExecutingAssembly GetName Version ToString 我得到
  • 什么是textview.setTextSize()?

    在我的 Android 游戏中 有一个文本视图 我使用以下代码设置文本大小 textview setTextSize 30 30以像素为单位 但它到底是什么 是字符的高度还是宽度 是序数号吗 在android java或kotlin 中设置
  • WPF - 宽度和高度必须为非负数

    我的应用程序遇到了一个奇怪的异常 它一直运行良好 直到我升级了我的开发机器 相同的操作系统 VS2010 并尝试再次调试软件 这是我得到的异常 宽度和高度必须为非负数 堆栈跟踪在这里 at System Windows Size ctor
  • 使用 babel 后,'Symbol' 在 IE 中未定义

    我有一个reactjs使用 ES6 标准编写的应用程序 我使用webpack来建造它 这webpack加载js模块使用babel loader 具体来说 我使用以下版本的包 email protected cdn cgi l email p
  • OpenCV - 如何从 Canny 函数的结果中提取边缘?

    我在 OpenCV 中使用 Canny 函数 如下所示 Mat detected edges GetImage Canny detected edges detected edges 20 20 3 kernel size 我的问题是这个函
  • 在 C++ 中将对象数组设置为 null

    假设我有一个 C 中 Foo 类型的对象数组 Foo array 10 在 Java 中 我可以简单地通过以下方式将此数组中的对象设置为 null array 0 null the first one 我怎样才能在 C 中做到这一点 使用指