Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Destruktor ueberschreiben - Warnung (https://www.delphipraxis.net/44374-destruktor-ueberschreiben-warnung.html)

alcaeus 18. Apr 2005 17:49


Destruktor ueberschreiben - Warnung
 
Hallo allerseits,

ich versuche in einer von TObject abgeleiteten Klasse den Destruktor zu ueberschreiben, um einen Parameter hinzuzufuegen (fragt nicht warum, ich will es so, weil es komfortabel waere ;))

Delphi-Quellcode:
  TProgramOptions = class(TObject)
    private
      //...
    public
      constructor Create(LoadFile: Boolean=False);
      procedure Free(SaveFile: Boolean=False); overload;
      destructor Destroy(SaveFile: Boolean=False); overload;
      //...
  end; //type TProgramOptions = class(TObject)
Nun schimpft der Compiler aber rum, dass mein Destroy die Methode der Basisklasse ueberschreibt ("Method 'Destroy' hides virtual method of base type 'TObject'). Ich weiss es ist nur eine Warnung, aber mich interessiert, wie ich das umgehen kann. Welches Schluesselwort muss ich anstatt overload verwenden?

Greetz
alcaeus

Binärbaum 18. Apr 2005 17:51

Re: Destruktor ueberschreiben - Warnung
 
Gab es da nicht sowas wie
Delphi-Quellcode:
override;
:?:

MfG
Binärbaum

alcaeus 18. Apr 2005 17:51

Re: Destruktor ueberschreiben - Warnung
 
Zitat:

Zitat von Binärbaum
Gab es da nicht sowas wie
Delphi-Quellcode:
override;
:?:

Ja, das gibt es. Allerdings muessen fuer override die Parameterliste und der Rueckgabetyp uebereinstimmen ;)

Greetz
alcaeus

sakura 18. Apr 2005 17:53

Re: Destruktor ueberschreiben - Warnung
 
:warn:
Man sollte (darf) für den Destructor die Parameterliste nicht ändern. Das führt nur zu unnötigen AVs!
:warn:

...:cat:...

Dax 18. Apr 2005 17:53

Re: Destruktor ueberschreiben - Warnung
 
Delphi-Referenz durchsuchenreintroduce sollte sein was du suchst.

Die Muhkuh 18. Apr 2005 17:54

Re: Destruktor ueberschreiben - Warnung
 
Zitat:

Zitat von sakura
:warn:
Man sollte (darf) für den Destructor die Parameterliste nicht ändern. Das führt nur zu unnötigen AVs!
:warn:

...:cat:...

Man könnte doch noch eine Public-Variable definieren und wenn die auf true steht, wird halt noch gespeichert^^

alcaeus 18. Apr 2005 17:54

Re: Destruktor ueberschreiben - Warnung
 
Zitat:

Zitat von sakura
:warn:
Man sollte (darf) für den Destructor die Parameterliste nicht ändern. Das führt nur zu unnötigen AVs!
:warn:

Na gut, also gibts nur ein Free mit Parameter, und das wars auch schon. Danke trotzdem..
Allerdings wuerde mich jetzt interessieren warum es die AVs gibt ;)

Greetz
alcaeus

sakura 18. Apr 2005 18:01

Re: Destruktor ueberschreiben - Warnung
 
Zitat:

Zitat von alcaeus
Na gut, also gibts nur ein Free mit Parameter, und das wars auch schon. Danke trotzdem..

Auch nicht entscheidend besser, da Free intern durch Delphi gerne genutzt wird, um Objekte freizugeben.

Zitat:

Zitat von alcaeus
Allerdings wuerde mich jetzt interessieren warum es die AVs gibt ;)

Und Free ruft Destroy auf...

...:cat:...

alcaeus 18. Apr 2005 18:03

Re: Destruktor ueberschreiben - Warnung
 
Zitat:

Zitat von sakura
Auch nicht entscheidend besser, da Free intern durch Delphi gerne genutzt wird, um Objekte freizugeben.

Sollte nicht zu sehr ins Gewicht fallen, der Parameter ist mit einem Default-Wert belegt. Evtl. wird die Collection vor dem freigeben eben nicht gespeichert, aber was solls...

Greetz
alcaeus

sakura 18. Apr 2005 18:13

Re: Destruktor ueberschreiben - Warnung
 
Zitat:

Zitat von alcaeus
Sollte nicht zu sehr ins Gewicht fallen, der Parameter ist mit einem Default-Wert belegt. Evtl. wird die Collection vor dem freigeben eben nicht gespeichert, aber was solls...

Default-Werte werden beim Kompilieren, wenn nicht vorhanden im Aufruf "gefakt". Da aber die ganzen Delphi-Funktionen auf TObject als Basis zugreifen, finden die dort keinen Default-Wert, so wird auch keiner durch den Compiler gefakt -> immer noch eine AV wenn diese auf Deine Implementierung treffen ;)

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz