> @Rolf:
> Der "Overhead" der vtable ist ja nur da, wenn virtuelle Funktionen
> verwendet werden; verzichtet man darauf, entfällt der "Overhead".
Ja, klar. Eben deshalb meinte ich ja, daß man im Bezug darauf den
Reourcenverbrauch nur dann mit dem von C vergleichen kann, wenn man in
C auch ein vergleichbares Feature umsetzt.
Wenn ich in C++ keine virtuellen Funktionen habe, gibt's auch den
Overhead nicht. Wenn ich umgekehrt in C die Funktionalität virtueller
Funktionen nachbilden will, kostest das auch Ressourcen.
> Klassen mit nichtvirtuellen Funktionen erzeugen AFAIK gegenüber C
> keinen "Overhead", alles relevante wird zur Übersetzungszeit vom
> Compiler ausgewertet.
Das ist richtig. Eine Klasse mit nichtvirtuellen Funktionen ist im
Prinzip nichts weiter als eine struct kombiniert mit Funktionen, die
darauf zugreifen.
> Man kann auf µC ganz vorzüglich mit C++ arbeiten, man sollte sich
> nur dessen bewusst sein, was es bedeutet, bestimmte Konstrukte zu
> verwenden.
Das gilt insbesondere bei sehr knappen Ressourcen. Aber eine weise
Verwendung von C++ kann in manchen Programmen zu deutlich eleganterem
Code führen, der aber keinen oder nur einen sehr geringen Overhead
gegenüber C hat.
Dabei sind nicht nur Klassen sehr praktisch, sondern auch Templates (da
bei denen viel zur Compilezeit durchgeführt werden kann), wobei es bei
denen natürlich ebenfalls darauf ankommt, sie weise einzusetzen.