Posted By: bsw (bsw) on 'CZprogram'
Title: Re: C++ a inherited?
Date: Tue May 13 08:48:35 2003
> > constructor TResultTabSheet.Create(AOwner: TComponent);
> > begin
> > inherited Create(AOwner);
> > pc := TPageControl.Create(Self);
> > with pc do begin
> > Align := alClient;
> > MultiLine := true;
> > Parent := Self;
> > end;
> > end;
> >
> > todle optreubju prepsat do C++ (z Delphi) a nevim jak opsat to
> "inherited",
> > pripadne ceho presne se tyka to Create(AOwner), je to docela urgentni
> nevite
> > nekdo co s tim pls?
>
> Nikdy sem v objektovym Pascalu nedelal, takze budu jen hadat, ale neznamena
> to
> inherited ze se ma volat Create z rodicovsky tridy? Tj. pokud je
Presne tak, od BP/TP 7.0, kdy to zavedli, to tak je. tzn volani "inherited
<metoda>(params)" v metode <metoda>(params) znamena, ze se provede volani
stejne metoty tridy primeho nebo vzdalenejsiho predka. Lze
samozrejme pouzit i tvar <predek>.<metoda>(params), ale v tomto pripade je
"natvrdo" urceno, ktera metoda ktereho predka se vola.
Zlate casy pascalu :-), nicmene C++ je C++.
> TResultTabSheet zdedena z TResulSheet tak to bude v C++ asi
takhle: >
> class TResultTabSheet : public TResultSheet
> {
> TResultTabSheet(TComponent AOwner) : TResultSheet(AOwner), pc(this)
> {
> pc.Align = alClient;
> pc.MultiLine = true;
> pc.Parent = this;
> }
> }
>
Presneji by melo byt pc inicializovano na pc(new TPageControl(this)), podle
vyse uvedeneho prikaldu, ale to je detail, na ktery by casem jiste prisel sam
:-).
> Pokud chapu dobre ze Create je vlastne konstruktor (kterej se v C++ menuje
> stejne jako trida), a pc je class member tridy TPageControl. Jinak AOwner
> bude
> hodne pravdepodobne ukazatel, ne primo objekt.
Ano, v pascalu se konstrutory mohly menovat ruzne :-). Vetsinou se jemnovavaly
Init, Load (destruktory Done apod). Pzdeji prisel take constructor Create :-).
Doporucuji shlednout interface dane tridy, to musi byt dostupne na rozdil od
implementacni casti (me blahe pameti).
Dale ano, v C++ se ctor i dtor menuji stejne jako je pojmenovana trida, dtor
zacina tildou, muze byt jen jeden. Ctor-u muze byt vice. Pozor, uvedene metody
slouzi k inicializaci a deinicializaci instance tridy, a nevraci
(explicitne) zadnou hodnotu (coz je obcas neprijemne).
bsw
----------------------------------------------------------------
| mailto:bsw@centrum.cz | GSM +420 603 794 492 | ICQ# 31499029 |
----------------------------------------------------------------