[C++]Pourquoi le constructeur est pas appelé?

Malab29 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
Malab29 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
Je viens de me remettre au C++ et je n'arrive pas à comprendre pourquoi le constructeur (ni le destructeur) par défaut n'est pas appelé sur les objets mng2 et mng3...
Est-ce que quelqu'un peut m'expliquer ce qui se passe ?

Pour faire plus simple, quelle est la différence entre :
Objet monObj1();   // avec ()

et
Objet monObj1;   // sans ()


J'ai mis un exemple de code simple ci-dessous pour illustrer le problème.

/** 
 * main.cpp 
 * Le constructeur vide n'est affiché qu'une seule fois (au lieu de 3 !) --> pour mng1 
 * Le constructeur non-vide fonctionne et est appelé une seule fois --> pour mng4 
 * 
 * Aucun constructeur (ni destructeur) n'est appelé pour mng2 et mng3... POURQUOI ??? :( 
 * 
 * Le destructeur n'est appelé que 2 fois (pour mng1 et mng4) 
 */ 

#include <iostream> 
#include <string> 
using namespace std; 

class SerialManager{ 
public: 
 SerialManager(); 
 SerialManager( string str ); 
 ~SerialManager();  
}; 

SerialManager::SerialManager(){ 
 cout << "Constructeur vide" << endl; 
} 


SerialManager::SerialManager( string str ){ 
 cout << "Constructeur non-vide : str=" << str << endl; 
} 

SerialManager::~SerialManager(){ 
 cout << "Desctructeur" << endl; 
}; 


// fonction pour voir l'appel au destructeur 
void fonction(){ 
 SerialManager mng1; // sans (), le constructeur vide de SerialManager est appelé (OK) 
 SerialManager mng2(); // avec (), Pourquoi le constructeur vide et le destructeur de SerialManager ne sont **PAS** appelés ??? 
 SerialManager mng3(); // avec () Pourquoi le constructeur vide et le destructeur de SerialManager ne sont **PAS** appelés ??? 
 SerialManager mng4("tutu"); // sans (), le constructeur non-vide de SerialManager est appelé (OK) 
} 


int main(){ 
 fonction(); 
 return 0; 
} 

1 réponse

Malab29 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   2
 
up!
0