Ben*_*aro 6 c++ arrays constructor
C++中是否有关于数组元素构造顺序的保证?
#include <iostream>
using namespace std;
struct A {
A() { cout << this << endl; }
};
int main()
{
cout << "[0] is " << new A[3];
}
Run Code Online (Sandbox Code Playgroud)
打印出来
0x602010
0x602011
0x602012
[0] is 0x602010
Run Code Online (Sandbox Code Playgroud)
意味着元素是按照[0],[1]和[2]的顺序构建的.该语言是否保证该顺序?
Mik*_*our 11
是的,这是由C++ 11 12.6/3([class.init]/3)保证的:
当一个类对象数组被初始化(显式或隐式)并且元素由构造函数初始化时,应该按照下标顺序为数组的每个元素调用构造函数.
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |