c ++中的多级继承

时间:2015-03-25 22:06:10

标签: c++ inheritance multi-level

假设存在3级继承。

A类< -B< -C。

B类的方法可以访问C派生的成员吗?

假设合适的继承模式。

1 个答案:

答案 0 :(得分:5)

如果没有“技巧”,父类无法访问子类的数据,例如

class A
{
protected:
  int m_a;
};

class B : public A
{
protected:
  int m_b;
};

B可以访问m_a,A无法访问m_b。要获得此行为,您可以使用多态和访问器函数

class A
{
protected:
  virtual int GetVar() { return m_a; }
private:
  int m_a;
}

class B : public A
{
protected:
  virtual int GetVar() { return m_b; }
private:
  int m_b;
}

现在A可以通过调用GetVar()来访问m_b,例如

void A::DoSomething()
{
  // I want to do something to the variable, 
  int myVar = GetVar();
}

现在,如果实例的类型为A,则会调用A::GetVar(),如果实例的类型为B,则会调用B::GetVar()