Maison > développement back-end > C++ > Pourquoi « Class object(); » ne crée-t-il pas un objet C ?

Pourquoi « Class object(); » ne crée-t-il pas un objet C ?

Susan Sarandon
Libérer: 2024-12-18 11:04:10
original
725 Les gens l'ont consulté

Why Doesn't `Class object();` Create a C   Object?

Comprendre l'absence d'invocation de constructeur

En C, les constructeurs sont utilisés pour initialiser les objets d'une classe. Cependant, dans l'extrait de code fourni, le constructeur n'est pas invoqué, ce qui entraîne un comportement inattendu.

Le problème

La ligne problématique :

Class object();
Copier après la connexion
Copier après la connexion

ne fonctionne pas réellement invoquez le constructeur de la classe Class. Au lieu de cela, il déclare une fonction renvoyant un objet Class. Pour appeler correctement le constructeur et créer un objet, un point-virgule (;) doit être ajouté à la ligne :

Class object;
Copier après la connexion

Dans les coulisses : l'analyse la plus vexante

L'extrait de code initial met en évidence un problème connu comme "l'analyse la plus frustrante" en C . Lorsqu'il rencontre la ligne :

Class object();
Copier après la connexion
Copier après la connexion

l'analyseur C l'interprète de manière ambiguë comme une déclaration de fonction ou un appel de fonction avec une liste d'arguments vide. Cette ambiguïté entraîne souvent de la confusion et des résultats inattendus.

Correction du code

Pour invoquer le constructeur et créer un objet, le code doit être mis à jour comme suit :

#include <iostream>
using namespace std;

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

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

int main() {
    Class object; // Correctly invokes the constructor
}
Copier après la connexion

Exécutez le code corrigé pour observer le résultat attendu :

default constructor called
destructor called
Copier après la connexion

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