1- Ça a l'avantage d'être "exception safe" et de nettoyer correctement l'état courant même si une exception est levée dans un autre scope.
2- Ça evite toute erreur eventuelle "d'oublie" si un autre point de retour est ajouté dans le fonction.
3 - c'est beaucoup plus propre et concis, surtout en C++11 ou avec boost ( BOOST_SCOPE_EXIT http://www.boost.org/doc/libs/1_54_0/libs/scope_exit/doc/html/scope_exit/alternatives.html )
Mettre des patterns à grand coup de loop et break an C++, c'est bien souvent ne pas connaitre C++.
[^] # Re: Le cas goto
Posté par Firwen (site web personnel) . En réponse au journal Apple, le SSL les goto et les accolades. Évalué à 9. Dernière modification le 23 février 2014 à 12:42.
Oui enfin, autant en C ce genre de chose est acceptable. Autant en C++ ça l'est beaucoup moins.
Le C++ gère les scopes, et le traitement d'action différées en sortant d'un bloc peut être fait de manière safe ET performante par un Scope Guard object( http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Scope_Guard )
1- Ça a l'avantage d'être "exception safe" et de nettoyer correctement l'état courant même si une exception est levée dans un autre scope.
2- Ça evite toute erreur eventuelle "d'oublie" si un autre point de retour est ajouté dans le fonction.
3 - c'est beaucoup plus propre et concis, surtout en C++11 ou avec boost ( BOOST_SCOPE_EXIT http://www.boost.org/doc/libs/1_54_0/libs/scope_exit/doc/html/scope_exit/alternatives.html )
Mettre des patterns à grand coup de loop et break an C++, c'est bien souvent ne pas connaitre C++.