La méthode constructeur est utilisée pour initialiser les objets de classe. Contrairement aux autres membres de la classe parente, elle ne peut pas être héritée par la sous-classe (une sous-classe peut hériter de toutes les variables membres et méthodes membres de la classe parente, mais n'hérite pas des méthodes constructeur de la classe parente). Par conséquent, lors de la création d'un objet de sous-classe, afin d'initialiser les membres de données hérités de la classe parente, le système doit appeler les méthodes constructeur de la classe parente.
S'il n'y a pas de constructeur explicite, le compilateur fournira un constructeur par défaut, et ce constructeur par défaut n'est créé que lorsqu'aucun constructeur n'est explicitement déclaré.
Les principes de construction sont les suivants :
- 1. Si la sous-classe ne définit pas de méthode constructeur, la méthode constructeur sans argument de la classe parente est appelée.
- 2. Si la sous-classe définit une méthode constructeur, qu'elle ait ou non des arguments, lors de la création d'un objet de la sous-classe, la méthode constructeur sans argument de la classe parente est exécutée en premier, puis sa propre méthode constructeur est exécutée.
- 3. Lors de la création d'un objet de sous-classe, si le constructeur de la sous-classe n'appelle pas explicitement le constructeur de la classe parente, le constructeur sans argument par défaut de la classe parente sera appelé.
- 4. Lors de la création d'un objet de sous-classe, si le constructeur de la sous-classe n'appelle pas explicitement le constructeur de la classe parente et que la classe parente elle-même fournit un constructeur sans argument, le constructeur sans argument propre à la classe parente sera appelé.
- 5. Lors de la création d'un objet de sous-classe, si le constructeur de la sous-classe n'appelle pas explicitement le constructeur de la classe parente et que la classe parente ne définit que son propre constructeur paramétré, une erreur se produira (si la classe parente n'a qu'un constructeur paramétré, la sous-classe doit appeler explicitement cette méthode constructeur paramétrée).
- 6. Si la sous-classe appelle le constructeur paramétré de la classe parente, elle doit le faire en initialisant l'objet membre de la classe parente, par exemple :
Exemple
Après le constructeur de la classe fish, ajoutez un deux-points:, puis ajoutez le constructeur paramétré de la classe parente. De cette façon, lorsque le constructeur de la sous-classe est appelé, le système appellera le constructeur paramétré de la classe parente pour construire l'objet.
Des exceptions comme l'héritage courant de MFC CDialog peuvent être vues dans de tels exemples..
Exemple
Fichier d'implémentation
Exemple
Cette méthode d'initialisation est également souvent utilisée pour initialiser des membres constants (const) d'une classe, comme le montre le code suivant :
Exemple
Bien sûr, les variables membres ordinaires d'une classe peuvent également être initialisées de cette façon, mais il n'est pas nécessaire de le faire..
Source: http://blog.jobbole.com/109500/