How to understanding the meaning of C++03 13.5.3/2
<pre><code>#include "stdafx.h"
#include &lt;iostream&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

struct B {
    virtual int operator= (int rhs)
    {
        m_iValue = rhs;
        return m_iValue;
    }

    virtual B&amp; operator= (const B&amp; rhs)
    {
        m_iValue = rhs.m_iValue;
        return *this;
    }

    int m_iValue;
};
struct D : B {
    virtual int operator= (int rhs)
    {
        m_iValue = rhs;
        return m_iValue;
    }

    virtual D&amp; operator= (const B&amp; rhs)
    {
        m_iValue = rhs.m_iValue;
        return *this;
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
    D dobj1;
    D dobj2;
    B* bptr = &amp;dobj1;

    bptr-&gt;operator=(99);     // calls D::operator=(int)
    *bptr = 99;              // ditto
    bptr-&gt;operator=(dobj2);  // calls D::operator=(const B&amp;)
    *bptr = dobj2;           // ditto
    dobj1 = dobj2;           // calls implicitly-declared
                             // D::operator=(const D&amp;)
    return 0;
}
</code></pre>

<p><strong>Question 1</strong>> This question maybe is related to the question 2&amp;3.</p>

<p>Reference: C++03 13.5.3/2</p>

<blockquote>
  <p>Note: for a derived class D with a base class B for which a virtual
  copy assignment has been declared, the copy assignment operator in D
  does not override B’s virtual copy assignment operator.</p>
</blockquote>

<p>What does the following statement mean in plain English?</p>

<blockquote>
  <p>the copy assignment operator in D does not override B’s virtual copy
  assignment operator.</p>
</blockquote>

<p><strong>Question 2</strong>>  why the following statement call `D::operator=(int)</p>

<pre><code>    *bptr = 99;              // ditto
</code></pre>

<p><strong>Question 3</strong>> Why the following statement call implicit <code>D::operator=(const D&amp;)</code></p>

<pre><code>    dobj1 = dobj2;           // calls implicitly D::operator=(const D&amp;)
</code></pre>
