Cela ressemble, il est censé être un constructeur; si elle est, il ne devrait avoir aucun type de retour, et il a besoin d'avoir le même nom que la classe, par exemple,
myClass::myClass()
: member1(0), member2(1)
{
}
Seul un constructeur peut avoir une liste d'initialiseur; vous ne pouvez pas déléguer ce type d'initialisation à une fonction Init
.
Tous les membres non statiques peuvent être initialisés dans la liste d'initialisation du constructeur. Tous les membres const et référence doivent être initialisés dans la liste d'initialisation du constructeur. Toutes choses étant égales, you should generally prefer to initialize all members in the constructor initializer list, plutôt que dans le corps du constructeur (parfois il n'est pas possible ou c'est maladroit d'utiliser la liste d'initialisation, auquel cas, vous ne devriez pas l'utiliser, évidemment).
ok, c'est logique. Mais j'ai déjà reçu des erreurs indiquant que seuls les membres const statiques peuvent être déclarés dans une classe. Cela signifie-t-il que seuls les membres statiques et constants peuvent recevoir une valeur dans la déclaration de classe, en opposition à la liste des initialiseurs ou au corps du constructeur. – numerical25
Seuls les membres intégraux statiques peuvent être initialisés dans la déclaration de classe. Tout membre non-intégral doit être initialisé à l'extérieur de la déclaration de classe. (c'est-à-dire que vous ne pouvez pas initialiser un flottant statique dans la déclaration, mais un int, un short, un char ou un bool). –