G++ a delete

Jirka Kosina jikos na jikos.cz
Čtvrtek Leden 27 13:42:33 CET 2005


On Thu, 27 Jan 2005, Michal Samek wrote:

> > No, sice uz jsem dlouho nic v C++ nenapsal, ale je mi divne, ze kdyz
> > chces polymorfismus, tak ze tam nemas virtualni destructor. (Ackoliv by
> > byl zatim prazdny.) Pokud tam nemas zadnou virtualni metodu,
> > tak se obavam, ze je to plne staticke.
> Spis mi slo o priklad, zda to takhle vubec jde. Ale pokud by to nebylo
> korektni, pak by to asi nemelo jit zkompilovat.

Syntakticka spravnost (jde to zkompilovat) neimplikuje spravnost 
semantickou (to zkompilovat jit muze a nemusi).

> V mem konkretnim pripade tridy obsahovaly neco malo metod jako virtual,
> destruktory jsem nechal staticke, protoze kdyz jsem je zkousel
> deklarovat jako virtual (aniz bych vedel presne proc, snazil jsem se
> zbavit te chyby), tak to snad ani neslo vytvorit - spadlo to hned na
> new. Zkusim zjistit az bude trochu casu, co v tom vezi a zeptam se
> konkretneji. Zatim diky, to mi staci.

Ve Vasem pripade by destruktor v kazdem pripade mel byt virtualni, protoze 
o typu objektu neni rozhodovano v case kompilace. (staci nadefinovat 
virtualni destruktor v predkovi, ve vsech potomcich pak bude virtualni 
automaticky).

To ze to spadlo uz na new je divne a spis by to znamenalo, ze jste tam 
nekde neco vykropil :)

-- 
JiKos.


Další informace o konferenci Linux