氯的平方 2020-08-09 22:18 采纳率: 100%
浏览 94
已采纳

关于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进行求值的操作呀。有点迷惑......

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-08-10 09:06
    关注
    m2(a),m1(a)
    这不是逗号运算符。
    逗号运算符说的是表达式里的逗号,逗号还有很多别的用法,比如 foo(1,2),你能说这个逗号是逗号运算符么。
    类似的,*有的地方是指针,有的地方是乘法。
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?