Intro :
Parfois on a besoin simplement d’utiliser une variable ou un objet de manière temporaire, pour ensuite le ou la détruire facilement après son utilisation.
En C++, les objets résidant sur la pile sont automatiquement détruits lors de la sortie d’un bloc de portée, y compris dans le cas d’une levée d’exception ; leur destructeur est appelé avant que l’exception ne se propage.
On peut alors se servir de ce mécanisme pour détruire automatiquement un objet une fois effectué son utilisation.
Prérequis :
– Avoir quelques notions de C++
Explications :
Il s’agit de manipuler un objet local qui sera utilisé dans la portée d’un bout de code et qui sera ensuite libérée lors de sa destruction.
Système de profiling :
Exemple :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
void ExempleAvecRAII() { // On acquiert une ressource (un fichier) Fichier logFile("Log.txt"); logFile.Write("Bonjour!"); // Le fichier logFile sera automatiquement détruit // après avoir atteint la fin de ce bloc de code. // On n'a pas besoin d'appeler une quelconque fonction // close() /* On peut lever aussi une exception juste ici. */ if (logFile.writeHasFailed()) { throw std::exception("Erreur!"); } } |
Résumé :
Nous avons présenté le principe du RAII. Ce principe permet de simplifier les initialisation du constructeur d’un objet, sans avoir à appeler le destructeur.


