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]构建的。该语言是否保证该顺序?
答案 0 :(得分:11)
是的,这是由C ++ 11 12.6 / 3([class.init] / 3)保证的:
初始化类对象数组(显式或隐式)并初始化元素 通过构造函数,应为数组的每个元素调用构造函数,遵循下标顺序