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 |
----------------------------------------------------------------

Search the boards