In java gibt es noch den zusätzlichen Ballast, dass alles in ein JRE gepackt wird, dass nochmal Speicher verbraucht.

new/delete sehe ich nicht als großes Problem, da man das ohne großen Aufwand über malloc/free nachbilden kann. Exceptions sind für mich auch ohne Belang. Ich benutze ja auch kein setjmp/longjmp (die Entsprechung in C)- OK na gut, ein-, zweimal in 17 Jahren C Programmierung habe ich es schon benutzt.

Und was Vererbung und Polymorphie angeht: Da sind die vtables der Preis den man zahlen muss (der nicht sehr hoch ist).

Was Code und Laufzeitexplosion angeht stimme ich Sprinter zu. Da sollte man schon wissen, was man tut. Das gilt für C zwar genau so, aber bei C++ (und ebenso bei Java) sind da einige Dinge mehr zu beachten.

Der größte Nachteil ist im Moment, dass der Debugger/Simulator im WinAVR nicht mit C++ Code zurecht kommt. De facto der einzige Grund, der mich vom Wechsel zu C++ abhält.