C ++数组元素的构造顺序

时间:2013-09-26 14:17:38

标签: c++ arrays constructor

C ++中是否有关于数组元素构造顺序的保证?

#include <iostream>
using namespace std;

struct A {
  A() { cout << this << endl; }
};

int main()
{
  cout << "[0] is " << new A[3];
}

打印出来

0x602010
0x602011
0x602012
[0] is 0x602010

暗示元素是按序列[0],[1]和[2]构建的。该语言是否保证该顺序?

1 个答案:

答案 0 :(得分:11)

是的,这是由C ++ 11 12.6 / 3([class.init] / 3)保证的:

  

初始化类对象数组(显式或隐式)并初始化元素   通过构造函数,应为数组的每个元素调用构造函数,遵循下标顺序