Charles et Michael Burr ont tous deux identifié que la deuxième déclaration était en fait un prototype de fonction et non une instanciation de A
.
que pour des raisons possibles pour lesquelles votre premier extrait de code ne fonctionne pas, vous obtiendrez une erreur de compilation dans cette situation lorsque:
- classe
A
hérite d'une classe de base qui n'a pas de constructeur par défaut; OU
- La classe
A
contient des objets de types qui n'ont pas de constructeur par défaut; OU
- La classe
A
contient des membres de référence;
ET
Vous avez fourni un constructeur par défaut qui omet une ou plusieurs de ces sous-objets de sa liste d'initialiseur.
Tous ces sous-objets ont besoin d'être initialisés, et le constructeur par défaut produit par le compilateur ne le fera pas. Notez que dans tous les cas, vous devez les initialiser dans la liste d'initialiseurs, pas le corps du constructeur.