Wichtige Frage über Zeiger



  • Hallo

    Instanzen von Klassen der VCL (also alles von TObject abgeleitetes) können nur als Heap-Objekte angelegt werden. Das wird benötigt, damit die Polymorphie funktioniert.

    bis bald
    akari



  • @akari
    Soweit ich weiß ist können von TObject abgeleitete Klassen nur desshalb ausschließlich auf dem HEAP allokiert werden, weil sie in DelphiLanguage implementiert sind!?



  • Hallo

    @ Reyx
    Welcher Mechanismus nun genau dafür verantwortlich ist, das es nicht vom Compiler akzeptiert wird, weiß ich nicht. Auf jeden Fall kommt sonst der Compilerfehler

    E2459 Klassen im VCL-Stil müssen mit dem Operator new erstellt werden

    Und Polymorphie funktioniert in C++ nun mal ausschließlich bei Heap-Objekten.

    bis bald
    akari



  • akari schrieb:

    Und Polymorphie funktioniert in C++ nun mal ausschließlich bei Heap-Objekten.

    Nein, die funktioniert auch mit Stack-Objekten, aber nur solange du mit Pointern oder Referenzen darauf zugreifst.



  • Na, wie soll das mit der Vielgestalltigkeit sonst auch klappen, wenn nicht mit Zeigern.
    Das ist jedoch sicher nicht der Grund für die Art der Implementation.



  • Also schrieb:

    Na, wie soll das mit der Vielgestalltigkeit sonst auch klappen, wenn nicht mit Zeigern.

    Mit Referenzen 😉



  • @CStoll: Haarspalter! 😉

    Trotzdem ist das nur eine Zeigerdeklaration.
    In der zugehörigen Projekt.cpp wird erst mit UseForm das entsprechende Formular eingelesen, der Zeiger deklariert und in der WinMain wird dann mittels Application->CreateForm eine Instanz erzeugt. Oder habe ich was Grundlegendes übersehen?



  • Nein ! Das ist korrekt.



  • Joe_M. schrieb:

    @CStoll: Haarspalter! 😉

    Mir doch egal 😃

    @also: Kannst du mal irgendwie kennzeichnen, auf welche Aussagen du dich jeweils beziehst? So ein "Nein ! Das ist korrekt." ohne den richtigen Zusammenhang ist wertlos 😉



  • Joe_M. schrieb:

    In der zugehörigen Projekt.cpp wird erst mit UseForm das entsprechende Formular eingelesen, der Zeiger deklariert und in der WinMain wird dann mittels Application->CreateForm eine Instanz erzeugt. Oder habe ich was Grundlegendes übersehen?

    Ich denke mal er bezog sich darauf, denn das stimmt ja auch.


Anmelden zum Antworten