Voor een class heb ik drie constructors die overloaded zijn:
Nu moet ik de constructors implementeren. Het gemakkelijkste is het als de tweede en derde constructor de eerste constructor aanroepen:
De ene constructor roept dus de andere aan. Het compileert prima, maar mijn vraag is: is deze constructie correct? Krijg ik niet ongewild twee instanties van TMijnForm of andere rare effecten?
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
| type TMijnForm = class(TForm) FParams: TParams; FHelpKeyword: string; FHelpContext: string; public constructor CreateNew(Params: TMijnParams); reintroduce; overload; virtual; constructor CreateNew(Params: TMijnParams; const HelpKeyword: string); reintroduce; overload; virtual; constructor CreateNew(Params: TMijnParams; HelpContext: Integer); reintroduce; overload; virtual; end; |
Nu moet ik de constructors implementeren. Het gemakkelijkste is het als de tweede en derde constructor de eerste constructor aanroepen:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| constructor TMijnForm.CreateNew(Params: TMijnParams); begin inherited Create(Application); FParams := Params; end; constructor TMijnForm.CreateNew(Params: TMijnParams; const HelpKeyword: string); begin Create(Params); FHelpKeyword := HelpKeyword; end; constructor TMijnForm.CreateNew(Params: TMijnParams; HelpContext: Integer); begin Create(Params); FHelpContext := HelpContext; end; |
De ene constructor roept dus de andere aan. Het compileert prima, maar mijn vraag is: is deze constructie correct? Krijg ik niet ongewild twee instanties van TMijnForm of andere rare effecten?
Een goede grap mag vrienden kosten.