C++ konstruktor a virtualni metoda

Ivo Zacek izacek na sky.cz
Středa Prosinec 8 00:01:50 CET 1999


Jan Kurik wrote:
> 
>   Ja si vybavuji, ze jsem tentyz problem resil jeste v davnych dobach
> Turbo - Pascalu od Borlandu, kde se to chovalo stejnym zpusobem. Virtualni
> metoda v konstruktoru se chovala jako by nebyla virtualni.

Ale to snad ne. Já mám s TP pár let zkušeností (TP6.0 a BP7.0) a vím, že
tam to tak nebylo, tj. virtuální metoda se chovala jako virtuální i v
konstruktoru. (Po přechodu na C++ jsem byl touto změnou lehce šokován,
než jsem si zvykl.) Tuto vlastnost TP mj. párkrát sepsul p. Pecinovský
ve svých článcích na téma "proč nemám rád Pascal". Ano, je to čisté,
bezpečné, logické atd., ale praktické to rozhodně není. Párkrát už jsem
na to narazil a přinutilo mě to napsat pár věcí složitěji, než bylo
třeba.

Abych nebyl špatně pochopen, C++ je celkově mnohem universálnéjší než TP
(šablony, vícenásobná dědičnost, přetěžování...) a toto vnímám jako
jednu z mála jeho nevýhod. Abych to nenechal jen na Pecinovském, i
Stroustrup ve svých knihách zdůvodňuje, proč je takováto implementace
bezpečná, ale mně tyto důvody připadají dost akademické. Prostě vím, že
mi to párkrát zkomplikovalo život.

A sorry, jsme off-topic. Toto je vlastnost C++, která není nikterak
vázána na Linux.

-- 
Ivo Zacek <izacek na sky.cz>, Supervisory Systems s.r.o. Brno
Starejte se o komára, velbloud se o sebe postará sám.



Další informace o konferenci Linux