当我使用 new[] 创建类数组时:
int count = 10;
A *arr = new A[count];
我看到它调用了默认构造函数A
count
次。因此arr
has count
已初始化类型的对象A
。
但是如果我使用同样的东西来构造一个 int 数组:
int *arr2 = new int[count];
它没有初始化。所有的值都是这样的-842150451
尽管 int 的默认构造函数将其值分配给0
.
为什么会有如此不同的行为?是否仅为内置类型调用默认构造函数?
See 接受的答案 https://stackoverflow.com/questions/2468203/how-can-i-make-new-default-initialize-the-array-of-primitive-types/2468254#2468254 to 一个非常相似的问题 https://stackoverflow.com/questions/2468203/how-can-i-make-new-default-initialize-the-array-of-primitive-types。当你使用new[]
每个元素都由默认构造函数初始化,除非类型是内置类型。默认情况下,内置类型保持统一。
具有内置类型数组默认初始化的使用
new int[size]();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)