Wichtige Frage über Zeiger
-
Ich versteh die Frage nicht. Das ist eine einfache Zeigerdeklaration.
Es wird ein Zeiger namens Form1 vom Typ TForm1 deklariert.Oder stört dich die Position des ''?
Man könnte auch TForm1 Form1 schreiben. Macht keinen Unterschied.@Beliah: Ich weiß, Du meinst das Richtige, aber hier wird kein Objekt erstellt, sondern nur ein Zeiger auf ein Objekt. Das Objekt selbst wird an anderer Stelle instanziert.
-
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 CompilerfehlerE2459 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.