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
Mary-Kate Olsenoriginal
2024-12-22 08:07:35576parcourir

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
}

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();

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;

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!

Déclaration:
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