title: Base Copy constructor not called
body: <pre><code>class Base
  {
        public:
        int i;
  
        Base()
        {
            cout&lt;&lt;"Base Constructor"&lt;&lt;endl;
        }
  
        Base (Base&amp; b)
        {
            cout&lt;&lt;"Base Copy Constructor"&lt;&lt;endl; 
            i = b.i; 
        }
  
  
        ~Base()
        {
            cout&lt;&lt;"Base Destructor"&lt;&lt;endl;
        }
  
        void val()
        {
               cout&lt;&lt;"i: "&lt;&lt; i&lt;&lt;endl;
        }      
  };
  
  class Derived: public Base
  {
        public:
        int i;
  
        Derived()
        {
            Base::i = 5;     
            cout&lt;&lt;"Derived Constructor"&lt;&lt;endl;
        }
  
        /*Derived (Derived&amp; d)
        {
            cout&lt;&lt;"Derived copy Constructor"&lt;&lt;endl;
            i = d.i; 
        }*/
  
        ~Derived()
        {
            cout&lt;&lt;"Derived Destructor"&lt;&lt;endl;
        }      
  
        void val()
        {
               cout&lt;&lt;"i: "&lt;&lt; i&lt;&lt;endl;
               Base::val();
        }
  };
  </code></pre>
  
  <p>If i do 
  Derived d1;
  Derived d2 = d1;
  The copy constructor of base is called and default copy constructor of derived is called.</p>
  
  <p>But if i remove the comments from derived's copy constructor the base copy constructor is not called. Is there any specific reason for this?
  Thanks in advance.</p>