18.3.5. Constructors and Virtual Inheritance
In a virtual derivation, the virtual base is initialized by the most derived constructor. In our example, when we create a Panda
object, the Panda
constructor alone controls how the ZooAnimal
base class is initialized.
To understand this rule, consider what would happen if normal initialization rules applied. In that case, a virtual base class might be initialized more than once. It would be initialized along each inheritance path that contains that virtual base. In our ZooAnimal
example, if normal initialization rules applied, both Bear
and Raccoon
would initialize the ZooAnimal
part of a Panda
object.
Of course, each class in the hierarchy might at some point be the “most derived” object. As long ...
Get C++ Primer, Fifth Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.