Maison > développement back-end > C++ > Comment instancier correctement un objet de classe C et appeler son constructeur ?

Comment instancier correctement un objet de classe C et appeler son constructeur ?

Mary-Kate Olsen
Libérer: 2024-12-22 08:07:35
original
575 Les gens l'ont consulté

How Do I Correctly Instantiate a C   Class Object and Invoke Its Constructor?

Comprendre les appels de constructeur en C

En C, les constructeurs sont des fonctions membres spéciales qui s'exécutent automatiquement lorsque les objets d'une classe sont créés. Ils sont responsables de l'initialisation des données membres de l'objet.

Le problème

Considérez l'extrait de code suivant :

#include <iostream>
using namespace std;

class Class {
    public:
        Class() {
            cout << "default constructor called" << endl;
        }

        ~Class() {
            cout << "destructor called" << endl;
        }
};

int main() {
    Class object(); // Incorrect syntax
}
Copier après la connexion

La fonction main() tente de créer un objet de classe Class. Cependant, il n'appelle pas le constructeur comme prévu.

La cause

Le problème réside dans la syntaxe incorrecte utilisée dans la déclaration d'objet :

Class object();
Copier après la connexion

Cette ligne déclare une fonction nommée object() qui renvoie un objet Class. Pour créer correctement un objet de classe Class, nous devons utiliser la syntaxe suivante :

Class object;
Copier après la connexion

La solution

En supprimant les parenthèses après le nom de la classe, nous déclarer un objet de classe Class. Cet objet appellera correctement le constructeur par défaut, comme prévu.

Notes supplémentaires

  • L'analyse la plus frustrante est un phénomène en C où le code peut être interprété comme soit une déclaration de fonction, soit une déclaration de classe selon le contexte.
  • Pour éviter cette ambiguïté, il est recommandé de suivre la règle empirique : "Toujours mettre parenthèses après un nom de classe pour indiquer un appel de constructeur."

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal