我是一名中级 Java 程序员,如果使用对内存中实例化对象的引用初始化对象,我习惯于依赖 Java 中的空值进行检查。我想在 C++ 中做类似的事情,但我不清楚如何实现它。我想初始化一个用户数组 - user
是我定义的一个类 - 所以我可以检查数组中的实际位置是否确实包含一个对象或者它是空闲的。
我曾尝试在 C++ 中使用 null 定义,但发现它只是一个“-1”int 值,我无法正确使用它。所以基本上我需要一些东西来区分我的阵列中的空闲位置和占用的位置。
此外,我可能对有一个额外的值来区分包含已删除用户的位置感兴趣,因为我打算在涉及删除用户的方法时用特殊标记将所需位置标记为空闲位置数组中的用户。
对于那些好奇的人,我正在实现一个简单的哈希集,我的类中的 remove 方法只是标记要删除的元素的位置,而不是进行一些重构。
最佳答案
首先 null 定义不是 -1 而是 0。假设你有类似的东西
class User
{
};
User RemovedClass;
你可以有这样的东西
User *arr[3];
arr[0] = new User();
arr[1] = 0;
arr[2] = &RemovedClass;
这里0是一个新的User,1是java null equivalent,2是删除类的标记。
编辑
通常,当您在 java 中看到 User 数组时,您必须将其映射到 C++ 中的 User* 数组。
在这些操作之后。
User a;
User b;
a = b;
在 java 中,a 和 b 指的是同一个用户。在 C++ 中,此类代码将产生引用两个不同用户对象的 a 和 b。
关于c++ - 用特殊值初始化 C++ 中的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8206847/