[C++]Pourquoi le constructeur est pas appelé?
Malab29
Messages postés
7
Statut
Membre
-
Malab29 Messages postés 7 Statut Membre -
Malab29 Messages postés 7 Statut Membre -
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 :
et
J'ai mis un exemple de code simple ci-dessous pour illustrer le problème.
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;
}
A voir également:
- [C++]Pourquoi le constructeur est pas appelé?
- Appelé en inconnu - Guide
- Votre correspondant n'est pas autorisé à recevoir vos appels - Forum Mobile
- Je peux appeler mais pas recevoir d'appel sur mon portable - Forum Réseaux sociaux
- Ecouter le repondeur de quelqu'un sans l'appeler ✓ - Forum Mobile
- Je ne peux pas appeler mais je peux recevoir les appels ✓ - Forum telephonie fixe