Le C++ c'est chaud...

J'ai un petit programme que j'ai essayé de simplifier au maximum
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using namespace std;
#include <string>
#include <vector>
#include <stdio.h>
 
class ebovar
{
public:
      union {
          int i;
          float f;
          bool b;
          string *s;
          void *o;
      };
 
// var is null
	ebovar() : i(0) {
		printf("++ create NULL\n");
	}
	~ebovar()
	{
		printf("-- delete ebovar %d\n", i);
	}
 
// integer function
	ebovar(int v) {
		i = v;
		printf("++ create int %d\n", i);
	}
	operator int() { return i; }
};
 
/********************************************************************
**
** Operateur +
**
********************************************************************/
 
ebovar operator+(ebovar left_op, ebovar right_op)
{
	return (ebovar)((int)left_op + (int)right_op);
}
 
int main(int _argc, char **_argv)
{
	ebovar _a = 10;
	ebovar _b = 12;
	ebovar _result = _b + _a;
}
il affiche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
++ create int 10
++ create int 12
++ create int 22
-- delete ebovar 12
-- delete ebovar 10
-- delete ebovar 22
-- delete ebovar 12
-- delete ebovar 10
Comment puis-je avoir 3 appels au constructeur de ma classe et 5 appels au destructeur ?
Qu'est ce que j'ai manqué ?