C ++ 11:类初始化赋值顺序

时间:2015-07-02 17:28:21

标签: c++ c++11 initialization

说我有一个表格

class MyClass
{
    int a = 1;
    int b;
    int c;
    int d = 4;
    MyClass() : b(2)
    {
        c = 3;
    }
}

a,b,c,d的分配顺序是什么?现在我肯定(从较旧的C ++)知道b将在c之前分配。但是关于后者的其他人呢?

1 个答案:

答案 0 :(得分:0)

来自[class.base.init]:

  

非静态数据成员按照在类定义中声明的顺序进行初始化   (再次不管mem-initializers的顺序如何)。

在这种情况下,排序等同于:

int a = 1;
int b = 2;
int c;
int d = 4;
c = 3;