Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi MustOverride? (https://www.delphipraxis.net/188260-mustoverride.html)

stahli 13. Feb 2016 22:43

AW: MustOverride?
 
Aber wenn Du von TDerivedClass ableitest, kannst Du auch vergessen, die InternalCleanUp zu überschreiben.
Meine Frage (oder wenn mal will auch Anregung) war, dass der Compiler in dem Fall warnt.

Delphi-Quellcode:
type
   TBaseClass = class
   private
     procedure CommonCleanup;
   protected
     procedure InternalCleanup; virtual; abstract;
   public
     procedure Cleanup;
   end;

   TDerivedClass = class(TBaseClass)
   protected
     procedure InternalCleanup; override;
   end;

   TDerivedSubClass = class(TTDerivedClassClass)
     procedure DoSub;
   end;

procedure TBaseClass.Cleanup;
begin
   CommonCleanup;
   InternalCleanup;
end;

Uwe Raabe 13. Feb 2016 23:17

AW: MustOverride?
 
Zitat:

Zitat von stahli (Beitrag 1330302)
Aber wenn Du von TDerivedClass ableitest, kannst Du auch vergessen, die InternalCleanUp zu überschreiben.
Meine Frage (oder wenn mal will auch Anregung) war, dass der Compiler in dem Fall warnt.

Aber genau das tut doch der Compiler, wenn du die abgeleitete Klasse instanzierst: x1020: Instanz von '%s' mit abstrakter Methode '%s.%s' wird konstruiert (Delphi)

Lemmy 13. Feb 2016 23:21

AW: MustOverride?
 
Zitat:

Zitat von stahli (Beitrag 1330302)
Aber wenn Du von TDerivedClass ableitest, kannst Du auch vergessen, die InternalCleanUp zu überschreiben.

warum muss in meiner abgeleiteten Klasse die Methode die aufräumt auch unbedingt InternalCleanUp heißen?

Das aufräumen zu vergessen ist immer ein Problem - auch wenn Du ein internalCleanUp hast kannst Du eine intern initialisierte Klasse vergessen. Ich kann nicht ganz nachvollziehen wie du das vermeiden willst.

stahli 13. Feb 2016 23:35

AW: MustOverride?
 
@Uwe
Oh, ja, CommonCleanup ist ja nicht virtuell.
Merke ich mir mal vor. Jetzt habe ich schon von Hand aufgeräumt.

@Lemmy
Ich dachte, der Compiler kann mich direkt darauf aufmerksam machen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 Uhr.
Seite 2 von 2     12   

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