C++ -- Why 'what' print "Unknown exception" in catch scope?
<pre><code>try
{
    range_error r("Hi I am hereeeee!");
    cout &lt;&lt; r.what() &lt;&lt; endl;   // print "Hi I am hereeeee!"  // case one
    exception *p2 = &amp;r; 
    cout &lt;&lt; p2-&gt;what() &lt;&lt; endl; // print "Hi I am hereeeee!"  // case two
    throw p2;
}
catch (exception *e)
{
    cout &lt;&lt; e-&gt;what() &lt;&lt; endl;  // print "Unknown exception"  // case three
}
</code></pre>

<p>Question></p>

<p>I don't know why case three prints "Unknown exception" instead of "Hi I am hereeeee!"?
The printed result is copied from VS2010</p>
