Zitat
Original geschrieben von MaxAuthority
Aja und vermutlich ist es möglich, aber mich würd interssieren, wie ich das in Java löse:
MyObject *a, *b;
a) a = b; //die addresse von b an a zuweisen
b) memcpy (a, b, sizeof (a)); //wirklich das objekt kopieren
[/B]
Öhm ... Frage: Warum so kompliziert?
*a = *b;
macht genau das selbe wie memcpy(a, b, sizeof(a)), wobei letzteres unschöner pre-ANSI Code und nicht mehr nötig ist. Oder übersehe ich da was?
BTW, in Java würdest Du das folgendermaßen lösen:
// a und b sind Referenzen vom Typ MyObject
a = b.clone();
Ist ja auch nicht so schwierig, oder? Du musst lediglich sicherstellen, dass MyObject Cloneable implementiert. Indem Du clone() überschreibst, kannst Du sogar bestimmen, _wie_ das Objekt kopiert wird. Eine bitweise Kopie ist nämlich nur bei wenigen Klassen/structs zielführend. Dieses Problem lässt sich in C nicht so sauber lösen.
Um noch auf einige Meldungen hier Bezug zu nehmen, dass Java quasi kein Anwendungsgebiet hätte:
Auf dem Markt wird nach mehr Java Programmierern als nach C++ oder C Programmierern gesucht - und das hat auch einen Grund.
Java ist im Enterprise und Server Bereich extrem stark, vor allem wenn es um maßgeschneiderte Custom Software geht. Bei Standardsoftware haben natürlich C und C++ die Nase vorne.
Aber gerade für In-House Development bietet sich Java geradezu an (wenn nicht bereits eine alte C Code Basis besteht), da die Entwicklungszeiten einfach kürzer und die resultierenden Programme weniger fehleranfällig sind.
Fazit: Java ist alles andere als "tot", nur wird man kaum einen Shareware FTP Client auf download.com finden, der in Java geschrieben ist ... weil das ganz einfach nicht das Ziel-Markt-Segment von Java ist.
Ich habe mich als C++ Fanatiker auch entsprechend lange gegen Java gewehrt, aber mittlerweile muss ich feststellen, dass diese Sprache echt was drauf hat.
Besonders genial ist das Nachladen/Reloaden von Klassen zur Laufzeit, was zB für Hot Deployment eingesetzt werden kann.
Dann natürlich die ganzen Sachen wie Runtime Reflection, etc ... Man kann ein Java Programm schreiben, das Java Code generiert, diesen kompiliert und die entstandenen Klassen dann verwendet. Macht das mal mit C++
Außerdem sind die Java Threads natürlich ein Traum, verglichen mit Libraries wie pthreads. Überhaupt: die Java Library ist zwar nicht perfekt, aber sie ist so schön konsistent und deckt soviele Bereiche ab, verglichen mit der C++ Standard Bibliothek, die wesentlich weniger umfangreich ist, und noch dazu in sich inkonsistent.
Abschließend: Java, C und C++ haben alle ihre Vorzüge und sind notwendig.