Consider a class hierarchy where A is the base class and B derives from A.
If the copy constructor is not defined in B>
The simple (possibly trite) answer is because you didn't tell it to. Since you are writing the derived copy constructor, you completely control how it behaves. Failure to specify a call to the base and the compiler generates code to initialize the base class by calling the base classes default constructor.