antred schrieb:
Final? In C++? Seit wann?
oops... in letzter zeit zu viel java gecoded
Selbst wenn du in einer Umgebung arbeitest, in der Exceptions kein Thema sind, ist RAII eine ideale Lösung (wenn du obligatorische Aufräumarbeiten hast), weil du sonst entweder dafür sorgen mußt, daß deine Funktion nur einen Ausstiegspunkt hat, oder aber die Aufräumarbeiten an jedem möglichen Ausstiegspunkt explizit anstoßen mußt.
du hast schon mein beispiel gesehen oder?
Erweitert später mal jemand deine Funktion...
wen interessiert das? SPEZIELE SITUATION und so! wir reden immer noch davon, dass es situationen gibt in denen goto gut ist und nicht davon, wieviele es gibt in denen es nicht gut ist!
davon abgesehen ist das so wie oben beschrieben leicht zu erweitern. es ist alles kompakt und zusammenhängend.
es gibt im übrigen noch einige andere vorteile dieser goto-variante.
Wenn ich die Vorteile der RAII-Variante aufzähle, ist es doch eigentlich klar, daß du diese Vorteile mit der goto-Variante nicht hast, oder?
lieber antred, ich bitte dich deine posts noch einmal anzuschauen. was du aufgezählt hast ist folgendes:
1. impliziete exception-kompatibilität
2. wird immer ausgeführt, wenn die methode verlassen wird.
meine antwort:
1. irrelevant in vielen spezielen situationen und wir reden von speziellen situation
2. in der spezielen situation wird ohnehin NUR kontrolliert die methode verlassen, also auch irrelevant
3 .dazu kommt, rail guard hat performance einbussen
4. ist nicht anwendbar in meinem beispiel, bzw. nur mit verkomplizierung. erkläre ich ganz unten, weil es deine letzte frage betrifft.
Traust du den Ergebnissen des Beispielprogramms nicht? Wenn nicht, erklär mir bitte warum nicht.
was meinst du damit?
Verstehe ich nicht ganz (ist da ein Teil deines Posts verloren gegangen)? Was hat die Anzahl der anfallenden Aufräumarbeiten damit zu tun, ob die RAII-Variante funktioniert oder nicht?
in meinem beispiel gibt es 3 stellen, an denen abgebrochen wird und die methode verlassen werden soll. zwei der stellen sollen die gleichen aufräumarbeiten durchführen und die andere das gleiche wie die 2 PLUS etwas zusätzliches.
wie unterscheidet deine rail guard WAS genau sie aufzuräumen hat, jeh nachdem WANN wir die methode verlassen?
um das zulösen müsste man z.b. eine variable "int aufräummodus" einführen. diese setzt man jeh nach rpgroammvortschritt. wenn du dann rausgehst checkt der destructor der raild guard klasse was er genau aufzuräumen hat.
dieses verhalten ist
1. unötig mit goto
2. hat zusätzliche if-abfragen und/oder switch
3. eine solche aufräummodus-variable ist nicht sonderlich intutiv verständlich auf den ersten blick.