title: How will it happen when construct an object with the same object name
body: <p>If the code entered a scope and defined a new object with the same name as the object outside, Will the newly defined object be correctly defined?<br>
  As following code shows:<br></p>
  
  <pre><code>class ClassB
  {
      ClassA* p;
      ClassB(ClassA* a)
      {
           p = NULL;
           if (a != NULL)
                 p = a;
      }
  };
  
  ClassA x;
  if (some condition)
  {
      ClassB x(x);
      // Will x-&gt;p be NULL or it will be pointer a?
  }
  </code></pre>
  
  <p>In the if scope, x-> is NULL here or a? <br>
  I can see in gcc, it will be NULL. But in VS2015 it seems a.<br>
  So my question is that what does the standard says for this part. Thanks a lot.</p>