Bonjour
J'ai un morceau de code assez étrange:
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 void UneFonction (const MaClasse& IT_member) { if (isSet && (__d != ::VSIVOTKind_float)) { this-> VSIVOT::~VSIVOT(); memset(this, 0, sizeof(*this)); } __d = ::VSIVOTKind_frabasis; if ( !isSet ) { _uneVariable_ = new MaClasse; isSet = 1; } *(_uneVariable_) = IT_member;
En gros, il appelle lui même son propre destructeur, puis il appelle la fonction memset, qui fixe à 0 la plage libérée. OK.
Ensuite, il se reconstruit à la volée.
C'est assez rare de voir çà. Qu'en pensez vous? Ce code a été fait à mon avis par quelqu'un d'expérimenté, donc je ne critique pas à priori.
Mais j'aimerais savoir ce que vous en pensez, quels sont les cas dans lesquels on a besoin de faire ca.
merci
Partager