如果我有这个类结构:
class A
{
public:
int a;
void funcA(){a = 0;}
};
class B
{
public:
int b;
void funcB(){b = 0;}
};
class C: public A, public B
{
public:
int c;
void funcC(){c = 0;}
};
为什么我可以执行此演员表?
A* pA = new A;
C* pC = static_cast<C*> (pA);
B* pB = static_cast<B*> (pC);
pB->funcB();
A和B是无关的,不是吗?
答案 0 :(得分:5)
它们可能不相关,但编译器在此处没有进行内部诊断。
它只是说&#34;哦,C
是A
的派生类,就我而言是合法的#34;。>
在下一行中它表示&#34;哦,B
是C
的基类,就我而言是合法的#34;。>
这就是它。在您的情况下,C
会在演员之间链接A
和B
。