关于c++类中的组合类的初始化的问题

书上的一个例子:

class Member1{
    int x;
public:
    Member1(int iv) : x(iv) { } 

};

class Member2{
    int y;
public:
    Member2(int iv) : y(iv){ }  
};

class withMembers{
    Member1 m1;
    Member2 m2;
public:
    withMembers(int a = 0) : m2(a),m1(a) { }    
};

为什么是先对m1进行初始化的操作呢,逗号运算符的求值顺序不是从左到右依次求值吗,那这个表达式中应该是先对m2进行求值的操作呀。有点迷惑......

m2(a),m1(a)
这不是逗号运算符。
逗号运算符说的是表达式里的逗号,逗号还有很多别的用法,比如 foo(1,2),你能说这个逗号是逗号运算符么。
类似的,*有的地方是指针,有的地方是乘法。