J'imagine qu'on peut faire des trucs sympas avec des sentries pour remplacer avantageusement les if/else ou goto :Le code est plus robuste en C++ : tu ne peux pas oublier d'appeler doSomethingOnExit().
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 struct DoSomethingOnExit { ~DoSomethingOnExit() { /* ... */ } }; void foo() { DoSomethingOnExit x; du code if(...) return; encore du code }; // vs void doSomethingOnExit() { ... } void foo() { du code if(...) { doSomethingOnExit(); return; } encore du code doSomethingOnExit(); }; // ou void foo() { du code if(...) goto end_; encore du code end_: doSomethingOnExit(); };
(Et le binaire généré sera identique à la version sans goto)
Il y a aussi l'argument d'avoir des erreurs de compilationCe genre de chose générera un binaire strictement identique à la version C utilisant des int au lieu des Minute / Second. Mais tu auras une erreur de compilation quand tu fera une erreur d’inattention (= moins de temps perdu en debug).
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 struct Second { ... }; struct Minute { ... }; void foo(Minute m); void bar(Second s); Second s(1); foo(s); // erreur bar(s); // ok
Partager