[英]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.