Bonjour

Le programme ci dessous me renvoie le résultat suivant
++ construction : il y a maintenant = 1 objets (je rajoute a priori a)
++ construction : il y a maintenant = 2 objets ( a priori a;u)
++ construction : il y a maintenant = 3 objets ( a priori a;u;v)
-- destruction : il reste maintenant 2 objets (je demande qui est détruit?)
-- destruction : il reste maintenant 1 objets (je demande qui est détruit?)
++ construction : il y a maintenant = 2 objets ( b est rajouté)
Je comprends le constructeur mais pas le destructeur
d'où mes questions
1 - A quel moment le destructeur est-il sollicité ?
2 - Pourquoi les 3 objets créés ne sont-ils pas détruits ?
3 - pourquoi le destructeur n'est-il pas sollicité à la fin du programme pour dire
qu'il supprime les objets restants ?

Je vous remercie par avance de la célérité et de la précision avec laquelle vous me répondrez

Voici le programme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <stdlib.h>
using namespace std;
 
class cpte_obj
{   
    static int ctr;
    public :  
 
       cpte_obj ();
       ~cpte_obj();
 
};
int cpte_obj ::ctr =0;
cpte_obj :: cpte_obj ()
 {      
        cout<< "++construction : il y a maintenant = " << ++ctr << " objets\n";
}
cpte_obj :: ~cpte_obj ()
{
       cout<< "-- destruction : il reste maintenant " << --ctr << " objets\n";
 
}
main ()
 
{  void fct ();
    cpte_obj a;
   fct();
   cpte_obj b;
   system("PAUSE");
    }
  void fct ()
   { cpte_obj u,v;}