首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

承继来的成员变量的构造顺序是什么

2013-09-08 
继承来的成员变量的构造顺序是什么?比如有这样几个类class IHaveA{protected:A m_a}class IHaveB{protec

继承来的成员变量的构造顺序是什么?
比如有这样几个类


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

[解决办法]
派生类需要调用基类构造函数,所以顺序和基类的一样。
[解决办法]
引用:
Quote: 引用:

比如有这样几个类

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的顺序来决定的么?
这个没有标准的答案,完全跟编译器相关。不过一般编译器厂商都是按顺序来的。

C++标准规定了从左到右的顺序

热点排行