因此,我正在使用std::map作为关联数组。映射声明如下:
std::map<int, CustomClass*> CustomContainer;
稍后,我将CustomContainer对象用作关联数组,例如,
CustomClass* pClass = CustomContainer[ID]
Josuttis指出:
映射的值是CustomClass *类型。该值将默认为NULL还是未定义? (我认为不会,因为“指针”不是基本的数据类型)。我认为它也会在某种程度上依赖于构造函数以及那里的行为...。
CustomClass的唯一构造函数如下所示:
CustomClass::CustomClass(ClassA param1, ClassB param2, ClassC param3, ClassD param4)
:privateClassA(param1),
privateClassB(param2),
privateClassC(param3),
privateClassD(param4)
{
}
非常感谢!
最佳答案
未初始化的局部指针变量或字段将具有未定义的值,就像未初始化的int
(或通常为POD类型的)局部变量或字段一样。但是,这与眼前的问题无关。
当您在 map 上使用operator[]
并创建一个新条目时,它会默认初始化。这意味着指针的空指针值(对于int
,则为0,依此类推)。它永远不会是不确定的。
如果您实际上需要检查 map 中是否存在具有此类键的项目,并且不想添加新条目,请使用find()
成员函数,并将返回的迭代器与end()
进行比较。