fla*_*nik 32 c++ arrays standards new-operator
当我使用new []创建我的类数组时:
int count = 10;
A *arr = new A[count];
Run Code Online (Sandbox Code Playgroud)
我看到它调用了一个默认的构造函数A count.其结果是arr已经count初始化的类型的对象A.但是,如果我使用相同的东西来构造一个int数组:
int *arr2 = new int[count];
Run Code Online (Sandbox Code Playgroud)
它没有初始化.所有值都类似于-842150451int的默认构造函数将其值赋值给0.
为什么会有这么不同的行为?默认构造函数是否仅针对内置类型调用?
sha*_*oth 54
见接受的答案,以一个非常类似的问题.使用时,new[]每个元素都由默认构造函数初始化,除非类型是内置类型.默认情况下,内置类型保持单一化.
要内置类型数组默认初始化使用
new int[size]();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18785 次 |
| 最近记录: |