Tout d'abord, je sais très bien pourquoi il n'y a pas de construction «enfin» en C ++? mais une discussion de plus en plus longue sur une autre question semble justifier une question distincte.
Mis à part le problème qu'en finally
C # et Java ne peuvent essentiellement exister qu'une seule fois (== 1) par portée et qu'une seule portée peut avoir plusieurs (== n) destructeurs C ++, je pense qu'ils sont essentiellement la même chose. (Avec quelques différences techniques.)
Cependant, un autre utilisateur a fait valoir :
... J'essayais de dire qu'un dtor est intrinsèquement un outil pour (Release sematics) et finalement est intrinsèquement un outil pour (Commit semantics). Si vous ne voyez pas pourquoi: réfléchissez à la raison pour laquelle il est légitime de lancer des exceptions les unes sur les autres dans des blocs enfin, et pourquoi il n'en va pas de même pour les destructeurs. (Dans un certain sens, c'est une chose entre données et contrôle. Les destructeurs sont pour libérer des données, enfin pour libérer le contrôle. Ils sont différents; il est malheureux que C ++ les lie ensemble.)
Quelqu'un peut-il clarifier cela?