Einzelnen Beitrag anzeigen

Gonzo2

Registriert seit: 4. Nov 2007
42 Beiträge
 
#18

Re: Fragen zu OOP und Klassen

  Alt 23. Nov 2007, 16:35
Vielleicht noch eine Frage zu Create. Deswegen lohnt nicht ein extra Thread und wir haben hier sowieso viel über Create diskutiert.

In der Regel wird nur ein Create benötigt, man kann aber mehrere erstellen.

Delphi-Quellcode:
type
  TMyClass = class
  private
    fCreated: TDateTime;
  public
    constructor CreateA();
    constructor CreateB(Int: Integer);
    function getCreated: TDateTime;
  end;

constructor TMyClass.CreateA();
begin
  fCreated := now;
end;

constructor TMyClass.CreateB(Int: Integer);
begin
  fCreated := now + Int;
end;

function TMyClass.getCreated: TDateTime;
begin
  result := fCreated;
end;
Der Konstruktor reserviert Speicher, füllt den mit Nullen usw. Rufe ich also CreateA auf, ist alles klar, es wird ein Objekt erstellt. Was passiert aber wenn ich hinterher CreateB aufrufe?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  MyClass: TMyClass;
begin
  MyClass := TMyClass.CreateA;
  try
    ShowMessage(DateToStr(MyClass.getCreated));
    MyClass := TMyClass.CreateB(10);
    ShowMessage(DateToStr(MyClass.getCreated));
  except
    MyClass.Free;
  end;
end;
Eine Fehlermeldung gibt es nicht, warum auch. Aber was passiert hier? Wird ein zweites Objekt erstelt? Oder bleibt es das Objekt, nur bekommt das Objekt einen neuen Anfangszustand? Wird alles wieder genullt? Oder wird einfach nur fCreated neu gesetzt? Was passiert wenn der Kreator das zweite mal aufgerufen wird?
  Mit Zitat antworten Zitat