title: How is this possible to use in c++?
body: <ol>
  <li>To my surprise, I found that the name of a c++ object can be the same as class name. Can someone explain to me the reason why?</li>
  <li>When I declare an object of class <code>a</code> as <code>a a1()</code>, it does not raise an error, but doesn't call the constructor. Why is this happening?</li>
  </ol>
  
  <p>My code:</p>
  
  <pre><code>#include&lt;iostream&gt;
  using namespace std;
  
  class a 
  {
      public:
      a() 
      {
          cout &lt;&lt; "in a\n";
      }
  };
  
  int main()
  {
      a a1();
      a a;
  }
  </code></pre>