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_iterator始终等于m_list.end(),因为它为空。
成员按声明顺序构造。
因此,在调用m_list.begin()之前将先构造m_list。