继承来的成员变量的构造顺序是什么?
比如有这样几个类
class IHaveA
{
protected:
A m_a;
};
class IHaveB
{
protected:
B m_b;
};
class IHaveC
{
protected:
C m_c;
};
然后我这样继承
class IHaveABC:
public IHaveA,
public IHaveB,
public IHaveC
{
};
那么m_a,m_b,m_c的构造顺序是什么
是根据public的顺序来决定的么?
[解决办法]
一般情况下是
按照声明的顺序依次执行父类的构造函数的
class IHaveABC:
public IHaveA,
public IHaveB,
public IHaveC
{
};
//如果如上所声明的话则 构造顺序
IHaveA->IHaveB->IHaveC
[解决办法]
派生类需要调用基类构造函数,所以顺序和基类的一样。
[解决办法]
C++标准规定了从左到右的顺序