title: Is it necessary to create a Copy Constructor for derived classes?
body: <p>If i have a base class with a complex data member, let's say <code>char*</code>, and at the end of my inheritance chain I have another class with the same kind of DM, do i have to implement the CCTORs of all the other classes on the way?</p>
  
  <p>for example:</p>
  
  <p>Animal Class:</p>
  
  <pre><code>class Animal
  {
      int age;
      char* name;
      Animal() { ... } 
      Animal(const Animal &amp;animal) { ..deep copying name..}
  }
  </code></pre>
  
  <p>Mammal Class:</p>
  
  <pre><code>class Mammal : public Animal
  {
      int height;
      Mammal() { ... } 
  }
  </code></pre>
  
  <p>Horse Class:</p>
  
  <pre><code>class Horse : public Mammal 
  {
      char* color;
      Horse() { ... } 
      Horse(const Horse &amp;horse ) { ..deep copying color..}
  }
  </code></pre>
  
  <p>Do i need to implement a CCTOR in <code>Mammal</code>, even though it has only an <code>int</code> as a data member?</p>
  
  <p>Basically my question is: when copying a complex object (built from several classes), does the compiler activate the CCTOR of each part separately?</p>
  
  <p>Edit:
  To be clear, i want to copy a <code>Horse</code> object. If i write my code as above, will its name be deep copied as well?</p>