Calling a constructor of the base class from a subclass' constructor body

base-class, c++, constructor

Solution

The following is an excerpt from "Accelerated C++": "Derived objects are constructed by: 1. Allocating space for the entire object (base class members as well as derived class members); 2. Calling the base-class constructor to initialize the base-class part of the object; 3. Initializing the members of the derived class as directed by the constructor initializer; 4. Executing the body of the derived-class constructor, if any."

Summarizing the answers and comments: Calling a constructor of the base class from a subclass' constructor body is impossible in the sense that #2 above must precede #4. But we still can create a base object in the derived constructor body thus calling a base constructor. It will be an object different from the object being constructed with the currently executed derived constructor.

Problem

I was under impression that it's impossible, see for example: Calling the constructor of the base class after some other instructions in C++ But the following program runs and produces two lines of "Constructor Person": ``` #include <iostream> class Person { public: Person() { std::cout << "Constructor Person" << std::endl; } }; class Child : public Person { public: Child() { c = 1; Person(); } int c; }; int main() { Child child; return 0; } ``` The first one is implicit call of the default constructor, that's clear. What about the 2nd one - does it mean that the action described in the title is legitimate? I use Visual C++ 2010.

Original source

Related problems