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

标签 c++ arrays object null

假设我在 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++ 实现方式,因为它并非总是指针类型,而不仅仅是零。

关于c++ - 在 C++ 中将对象数组设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13114881/

相关文章:

c++ - 如何在 for 循环中返回一个 boolean 值

python - 如何将时间序列数据输入自动编码器网络进行特征提取?

c++ - 是否有推荐的设计模式来与进程通信参数?

具有内存错误访问的 C++ struct new

c++ - 语言环境格式化时间输出的实现

java - 匹配类数组

java - 将阿拉伯语内容添加到 PDF 表格

iphone - 如何在 Objective-C 中使用属性?

java - scala(包)对象反编译为 java - 包含 "new ();"的静态初始值设定项 - 那是什么?

c++ - 考虑到可能的别名,如何编写函数