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 zB

    math::sqrt(5);
    in Java
    math.sqrt(5):

    wenn sqrt eine static Methode der Klasse math ist.



  • doppelt


Anmelden zum Antworten