Point de syntaxe C++ pour un noob siouplait - C++ - Programmation
Marsh Posté le 02-05-2016 à 14:16:21
C'est la syntaxe pour appeler le constructeur de ta classe parent
Code :
|
Marsh Posté le 02-05-2016 à 15:42:57
C'est une forme de déclaration pour être sur de ne pas oublier d'appeler le constructeur parent ?
Parce qu'on aurait pu le faire dans le corps du constructeur de B, j'imagine.
Merci de ta réponse.
Marsh Posté le 02-05-2016 à 16:07:03
Marco Paulo a écrit : C'est une forme de déclaration pour être sur de ne pas oublier d'appeler le constructeur parent ? |
Non.
1/ on ne peut pas "oublier" d'appeler le constructeur parent (dans mon exemple, le premier constructeur de B appelle bien le constructeur de A)
2/ on n'aurait pas pu le faire dans le corps de B. L'ordre de construction des classes et de leurs members est strictement défini. Quand tu entres dans le corps du constructeur de B, tu as la garantie que toutes les classes dont tu dérives sont initialisées et que les constructeurs par défaut de tes membres ont été appelés (avec un cas particulier pour les types primitifs comme int, float et autres, qui ne sont pas initialisés par défaut)
Marsh Posté le 02-05-2016 à 16:48:09
theshockwave a écrit : Non. |
Woki, merci, c'est précieux comme information. Je ne l'avais pas lu jusque là, ça clarifie pas mal de points
Big thank
Marsh Posté le 02-05-2016 à 09:09:36
Bonjour
Je découvre le c++, je lis des tutoriaux, mais pour l'instant, je bloque sur cette syntaxe. Elle doit être expliquée dans des tutoriaux de plus haut niveau que ceux que j'ai lu jusque là.
Donc, c'est peut être obvious de chez obvious, mais vous me feriez gagner du temps, à vot bon coeurs m'sieur dame, pour une vieux programmeur nécessiteux de la tête
Cellule::Cellule(const FObjectInitializer& ObjectInitializer)
:Super(ObjectInitializer)
{
Cloison = NewObject<AClosion>();
}
Le :Super(ObjectInitializer) veux dire qu'on me passe un objet et que son constructeur va être appelé automatiquement ?
Ou autre complètement autre chose ?
Ca me semble louche de recevoir une pointeur sur un objet qui ne serait pas déjà passé par la case constructeur.
Message édité par Marco Paulo le 02-05-2016 à 09:10:27