繁体   English   中英

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

[英]C++ array elements order of construction

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]的顺序构建的。 该语言是否保证该顺序?

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

当一个类对象数组被初始化(显式或隐式)并且元素由构造函数初始化时,应该按照下标顺序为数组的每个元素调用构造函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM