当我使用 new[] 创建我的类数组时:
int count = 10;
A *arr = new A[count];
我看到它调用了 A
count
次的默认构造函数。结果 arr
具有 count
类型为 A
的初始化对象。但是如果我用同样的东西来构造一个 int 数组:
int *arr2 = new int[count];
它没有被初始化。所有值都类似于 -842150451
尽管 int 的默认构造函数将其值分配给 0
。
为什么会有如此不同的行为?默认构造函数是否仅针对内置类型调用?
原文由 flashnik 发布,翻译遵循 CC BY-SA 4.0 许可协议
请参阅 一个非常相似的问题 的已接受答案。当您使用
new[]
每个元素都由默认构造函数初始化,除非该类型是内置类型。默认情况下,内置类型是未初始化的。拥有内置类型数组默认初始化使用