Unterschied von new in C++ und Java
-
Hallo,
ich lerne gerade auf die Info-Prüfung und habe mit einer Frage ein paar Schwierigkeiten, vielleicht kann mir hier jemand etwas auf die Sprünge helfen:1. Was ist der Hauptunterschied bei der folgenden Deklaration einer Klasseninstanz in C++ und Java?
Beispielklasse eineInstanz;
Welche Rolle spielt jeweils new in diesen Sprachen?In C++ wird doch mit new ein Zeiger auf das neue Objekt zurückgegeben, in Java weist man den Rückgabewert einfach einer Variablen von demjenigen Typ zu?
Steh grad irgendwie aufm Schlauch.
-
New alloziert Speicher auf dem Heap (Free Store) und diesen weist du in C++ meistens einem zeiger zu. in java einer art "Referenz"
Beispielklasse eineInstanz;
In C++ erzeugst du eineInstanz auf dem Stack, in Java legst du eine Referenz an, die du erst mit new auf ein gültiges Objekt verweisen lassen musst.
In C++ muss jedes mit new allokierte Objekt mit delete freigegeben werden (bzw. jedes mit new[] allokierte mit delete[]).angaben ohne gewähr. habe das letzte mal vor 1 1/2 jahren ernsthaft mit java zu tun gehabt
-
Danke, das hilft mir schon sehr weiter, aber jetzt noch 2 Fragen, dann hab ich alles:
5. Weshalb kann es in Java anders als in C keine (Anwendungs-)globale Variable geben?
Weshalb braucht man in C++ im Gegensatz zu Java einen Scope-(::)-Operator?
-
5. Weshalb kann es in Java anders als in C keine (Anwendungs-)globale Variable geben?
Weil es in Java nichts globales (im eigentlichen Sinne) gibt. Alles wird in Klassen gepackt - somit kann keine variable "ueber" allen Klassen stehen.
Weshalb braucht man in C++ im Gegensatz zu Java einen Scope-(::)-Operator?
Es gibt ihn schon, allerdings sieht er anders aus.
in C++ schreibt man zBmath::sqrt(5);
in Java
math.sqrt(5):wenn sqrt eine static Methode der Klasse math ist.
-
doppelt