Puisque la classe b n'a pas de constructeur, quel constructeur utilise-t-elle? Utilise-t-il le constructeur par défaut d'un? Ou son propre compilateur en a généré un?
Ceci est un peu plus compliqué que cela puisse paraître au premier abord.
En termes de C++ Standard, les classes obtiennent des constructeurs générés par le compilateur sans arguments lorsque le programmeur ne spécifie pas explicitement un constructeur. Conceptuellement, b
obtient un tel constructeur par défaut qui à son tour invoque le constructeur de a
. À un autre niveau, dans un compilateur d'optimisation, aucun des deux constructeurs n'a à faire quoi que ce soit - ils peuvent (ou ne peuvent pas) être complètement éliminés et «ne pas exister» même en tant que fonction vide. Donc - à ce niveau - parler du constructeur de b
appelant le constructeur de a
est juste un non-sens.
À mon humble avis, il est important de comprendre les deux aspects.