我一直在为这个问题苦苦挣扎。在 C++ 中,在类 A 中创建的类 B 的数组必须通过默认构造函数进行初始化,这似乎是非常无效的。有什么办法可以避免这种行为吗?我实现了人员登记册。如果我使用计数引用创建它,我会得到很多默认构造函数调用,并且它似乎没有应有的效果。我还必须创建默认构造函数,这是不必要的。
最佳答案
当您创建对象数组时,无论是静态数组 (Person people[1000]
) 还是动态分配的数组 (Person* people = new Person[1000]
) >),将使用默认构造函数创建并初始化所有 1000 个对象。
如果您想为对象创建空间,但还没有创建它们,您可以使用像 std::vector 这样的容器。 (实现动态大小的数组),或使用指针数组,例如 Person* people[1000]
或 Person** people = new Person*[1000]
-在这种情况下,您可以用NULL
初始化所有项目以指示空记录,然后逐个分配对象:people[i] = new Person(/* 这里是构造函数参数*/)
,但您还必须记住单独删除
每个对象。
关于c++ - 类中的数组未经初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15785139/