假设我在 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/