class Base
{
public:
int i;
Base()
{
cout<<\"Base Constructor\"<
If you want to read actual rule you should refer to C++ Standard 12.8/8:
The implicitly-defined copy constructor for class X performs a memberwise copy of its subobjects. The order of copying is the same as the order of initialization of bases and members in a user-defined construc- tor (see 12.6.2). Each subobject is copied in the manner appropriate to its type:
- if the subobject is of class type, the copy constructor for the class is used;
- if the subobject is an array, each element is copied, in the manner appropriate to the element type;
- if the subobject is of scalar type, the built-in assignment operator is used.
When you define copy constructor explicitly you should call copy c-tor of base class explicitly.