Are parent class constructors called before initializing variables?

Yes, the base class is initialized before the members of the derived class and before the constructor body executes.

12.6.2 Initializing bases and members [class.base.init]

In a non-delegating constructor, initialization proceeds in the
following order:

— First, and only for the constructor of the most
derived class (1.8), virtual base classes are initialized in the order
they appear on a depth-first left-to-right traversal of the directed
acyclic graph of base classes, where “left-to-right” is the order of
appearance of the base classes in the derived class
base-specifier-list.

— Then, direct base classes are initialized in
declaration order as they appear in the base-specifier-list
(regardless of the order of the mem-initializers).

— Then, non-static
data members are initialized in the order they were declared in the
class definition (again regardless of the order of the
mem-initializers).

— Finally, the compound-statement of the
constructor body is executed.

Leave a Comment