Es würde zwar extrem hässlich werden, aber OOP ist auch in C möglich.
Es gibt viel C-Code, der objektorientiert ist (z.B. FILE* aus der Standardbibliothek). Klar müssen Dinge wie virtuelle Funktionen recht mühsam nachgebaut werden, aber man muss ja nicht immer 1:1 Sprachmittel übertragen.
Ich finde den Ausgleich durch den Garbage-Collector durchaus verschmerzlich wenn man kein RAII hat.
RAII ist ein Konzept für beliebige Ressourcen. Ein GC kann nur Speicher verwalten.
Und in Bezug auf Eleganz finde ich dass C# trotzdem die Nase vorne hat. Beispiel findet sich schon im vergleich der Standard-bibliothek: [...] ich finde letzteres z.b. viel angenehmer
. Aber ein von mir böse ausgesuchtes Beispiel soll ja nicht entscheidend sein.
In C++0x kommen die Foreach-Schleife und Lambda-Funktionen. Da sieht es auch wieder ein wenig anders aus. Und schon heute kannst du Folgendes tun:
|
C-/C++-Quelltext
|
1
2
|
BOOST_FOREACH(Obj& o, list)
o.Update();
|
Ausserdem solltest du ++it statt it++ schreiben. Und STL-Container mit besitzenden Zeigern sind auch nicht unbedingt das Wahre.