Cast not shown correctly
<p>In the sample code below, why </p>

<p><code>a</code> is assigned as <code>004609CC</code> instead of <code>004609C0</code>?
I was expecting a,b, and c to point to the same address.
And why dynamic_Cast(a) changes the address to <code>004609C0</code></p>

<pre><code>class A1
{public:
    unsigned a1;
    int a2;
    virtual ~A1() { }
};

class B1
{public:
    unsigned b1;
    int b2;
    virtual ~B1() { }
};

class C1 : public B1, public A1
{public:
    unsigned c1;
    virtual ~C1(){}
};


int main()
{
    C1* c = new C1;
    A1* a = c;
    B1* b = c;


    std::cout &lt;&lt; static_cast&lt;void*&gt;(a) &lt;&lt; "\n"; //004609CC Why not 004609C0?
    std::cout &lt;&lt; static_cast&lt;void*&gt;(b) &lt;&lt; "\n"; //004609C0
    std::cout &lt;&lt; static_cast&lt;void*&gt;(c) &lt;&lt; "\n"; //004609C0
    std::cout &lt;&lt; dynamic_cast&lt;C1*&gt;(a) &lt;&lt; "\n"; //004609C0  


//  delete b;
}
</code></pre>