Plus d'appel au destructeur qu'au constructeur ?
Le C++ c'est chaud...
J'ai un petit programme que j'ai essayé de simplifier au maximum
Code:
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:
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é ?