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

C++11: Body of class initialization assignment order

本文关键字:顺序 主体 赋值 初始化 C++11      更新时间:2023-10-16

假设我有一个形式的类

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

a,b,c,d的分配顺序是什么?现在我确信(从旧的C++中(b将在c之前分配。但对于后者,其他人呢?

来自[class.base.init]:

非静态数据成员按照在类定义中声明的顺序进行初始化(同样,与mem初始化程序的顺序无关(。

在这种情况下,订单将相当于:

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