您的位置:首页 > 其它

初始化列表顺序

2012-11-18 14:14 176 查看
以初始化列表的形式在构造函数中对类的成员变量初始化时,初始化的顺序和变量声明的顺序一致(不是初始化列表中的顺序)。当初始化列表中的顺序和成员变量声明的顺序不一致时,编译会产生警告(g++中打开-Wall):

XXX will be initialized after XXX when initialized here

之所以有警告,是因为这么做可能会产生潜在的问题,如

class Test
{
private:
int m_i;
int m_j;
public:
Test(int i): m_j(i), m_i(m_j)
{}
};
如果按照初始化列表中的顺序,先初始化m_j为i,再初始化m_i为m_j,没有问题,但是实际的初始化顺序是先初始化m_i,再初始化m_j,所以m_i的值在初始化后是不确定的,因为m_i初始化时m_j还没有被初始化,其值不确定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: