'无关类型'之间的static_cast

时间:2011-12-08 12:20:41

标签: c++ static-cast

如果我有这个类结构:

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是无关的,不是吗?

1 个答案:

答案 0 :(得分:5)

它们可能不相关,但编译器在此处没有进行内部诊断。

它只是说&#34;哦,CA的派生类,就我而言是合法的#34;。 在下一行中它表示&#34;哦,BC的基类,就我而言是合法的#34;。 这就是它。在您的情况下,C会在演员之间链接AB