const and Virtual Inheritance
<pre><code>struct Base{
    virtual void foo(){
        std::cout &lt;&lt; "In Base\n";
    }
};
struct Derived : public virtual Base{
    virtual void foo() const{
        std::cout &lt;&lt; "In Derived\n";
    }
};
Base* d = new Derived();

int main(int argc,char** args){
    d-&gt;foo();
    system("Pause");
}
</code></pre>

<p>When I run this code "In Base" is printed.  Why does having the const specifier change the inheritance?</p>