c++ - 类中的数组未经初始化

标签 c++ arrays class initialization

我一直在为这个问题苦苦挣扎。在 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/

相关文章:

c++ - 类的二维数组和C++中的构造函数调用

c++ - 关于包含带有 guard 的头文件

c++ - 我想反转 map 的值并使用基于范围的 for 循环打印它。

c++ - tell() 函数在哪里定义的?

ios - 如何在 Collection View 单元格的一个部分中添加多个数组,其中该 Collection View 位于 tableView 单元格内?

c++ - 为 DiagonalMatrix 对象重载 operator()

c++ - 自定义 QDialog 在 exec() 时导致段错误

ios - 如何从 Swift3 iOS 中的对象数组中查找唯一值

c - 动态分配多维数组

C++ 覆盖方法