关于C ++:初始化列表之前的对象初始化

object initialzation before initialization list

本问题已经有最佳答案,请猛点这里访问。

给出:

1
2
3
4
5
6
class A {
    std::list<int> m_list;
    std::list<int>::iterator m_iterator;
public:
    explicit A() : m_iterator(m_list.begin()) { }
};

我可以保证在评估ctor初始化列表之前先构造m_list,以便begin()可以正确地取消引用其开始/结束吗? 还是我应该在ctor主体中更好地使用m_iterator分配?


成员按声明顺序构造。

因此,在调用m_list.begin()之前将先构造m_list