假设存在3级继承。
A类< -B< -C。
B类的方法可以访问C派生的成员吗?
假设合适的继承模式。
答案 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()