Bonjour,
Je cherche à coder une classe fournissant la strong guarantee en matière d'exception safety pour toutes ses opérations.
En postulant que l'opérateur d'affectation de la classe à laquelle appartient cette méthode fournit déjà la strong guarantee, je me suis dit qu'il suffisait de faire ça dans chaque méthode pour que la classe entière fournisse cette garantie :
Ca m'a l'air ok (ou pas ?), mais je voulais savoir si c'était une pratique courante, ou si au contraire ça ne se fait jamais.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 MaCLasse Moi = *this; // n'a aucun incidence sur this //... // code qui modifie Moi et qui: // - ne modifie aucun objet externe (que ce soit par paramètre de la fonction ou par singleton) // - suit l'idiôme RAII pour qu'il n'y ait pas de fuite //... *this = Moi; // strong guarantee de l'opérateur '=', donc soit ça throw et c'est comme si rien ne s'était passé, soit ça passe
Votre avis ?
Merci.
PS: j'ai du mal à faire des recherches sur le sujet, car je tombe toujours sur des généralités ou sur l'écriture d'un opérateur d'affectation fournissant la strong guarantee (ce qui n'est pas le sujet).
Partager