Basisklasse und abgeleitete Klassen in std::vector
-
knivil schrieb:
Da waren die C++ Programmierer ja echt arm dran vor 2011.
In der Tat.
knivil schrieb:
Na ein Glueck gab es Java.
Das hat ganz andere Probleme.

knivil schrieb:
Wie oft passiert es, dass man mit
new'ne Exception bekommt und weitermachen moechte?Nicht so oft. Aber wie oft kommt es vor, dass überhaupt eine Exception geworfen wird, und man nicht an einem komplett anderen Punkt weiter machen möchte? Auch nicht so oft. Insofern stelle ich mal die Behauptung auf, dass sehr viele C++ Anwendungen so 100byte Speicher / Stunde verlieren, aber das fällt auf nem Desktopsystem halt nicht auf. Trotzdem bleibt es unsauber, und wenn dann mal irgendein Mutex nicht freigegeben wird, wird's erst richtig lustig. Daher kann man doch ruhig mal auf die vielen Fallstricke hinweisen. Insbesondere wenn sie so leicht vermeidbar sind.

-
knivil schrieb:
Da waren die C++ Programmierer ja echt arm dran vor 2011. Na ein Glueck gab es Java.
Das =delete habe ich nur aus Schreibfaulheit benutzt (und um hier im Forum mehr C++11 einzubringen. C++11 ist inzwischen alt genug, dass man nicht mehr auf C++98 pochen braucht). Das Problem und die Lösung gab es auch schon in C++98.
-
SeppJ schrieb:
Hier ein Beispiel für die Smartpointeverweigerer, das sich nicht mehr mit try-catch wegreden lässt, selbst mit dem weitgehend unbekannten function-try-block:
Geht alles
class naives_raii { success *s; fail *f; public: naives_raii() try : s(s=0,new success), f(new fail) {} catch (...) { delete s; } ...wird allerdings schnell kompliziert.
-
Ach der Kommaoperator! Da habe ich so lange getüftelt, wie man es wohl mit try...catch machen könnte (ich will ja nix falsches erzählen) aber dann denke ich nicht an diesen.

-
Am lustigsten sind immer noch operator = in abgeleiteten Klassen, die Thread & Exceptionsicher sein sollen. Sowas macht ohne RAII Spaß.
