Maison >développement back-end >C++ >Pourquoi « Class object(); » ne crée-t-il pas un objet C ?
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.
La ligne problématique :
Class object();
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;
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();
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.
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 }
Exécutez le code corrigé pour observer le résultat attendu :
default constructor called destructor called
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!