Bonjour tout le monde,

prenons le bout de code suivant:
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
#include <set>
#include <iostream>
using namespace std;
 
struct Element
{
   Element(int n):num(n){cout<<"new"<<endl;}
   ~Element(){cout<<"delete"<<endl;}
   int num;
   bool operator < ( const Element & elt ) const { return ( num < elt.num ); }
};
 
int main()
{
   multiset<Element> theSet;
   cout << "--> insert" << endl;
   theSet.insert( Element(1) );
   cout << "--> clear" << endl;
   theSet.clear();
   cout << "--> termine" << endl;
   return 0;
}
La sortie est:
--> insert
new
delete
--> clear
delete
--> termine
Nous voyons donc que:
-> lors de l'insertion, le destructeur est appelé
-> on a, en tout, 1 new et 2 delete

Comprenez-vous ce qu'il se passe? Est-ce normal?