Odpovídáte na názor ke článku Nerozumím....
V C++ se dá dynamické zpracování napsat taky. Jen to pro něho není přirozené. V runtime vše lítá jako pointery, takže vlastně případné dynamický dispatching zprávy dopadne tak, že se napíše poloviční interpretr dynamického jazyka.
Což není nic složitého. Ve všech dynamických jazycích je zpracování zprávy hašovací tabulka stringů, která převede název zprávy na pointer metody, která jí zpracuje. Pokud se nenajde daný řetězec, následuje dynamický dispatching.
Jeden rozdíl ale je. C++ nezná typy v programu. Zná pouze tytpy v modulu, proto použití dynamic_cast() a podobně je celkem k ničemu, pokud nevíte, kde můžete narazit. Kromě toho je dynamic_cast() velmi pomalé. Tento operátor hledá pomocí strcmp() funkce řetězec a to je velmi pomalá akce, která nemůže ani pomýšlet na rychlost danoou hašovacími tabulkami.
Miloslav Ponkrác
Autor se zabývá vývojem kompilátorů a knihoven pro objektově-orientované programovací jazyky.
Přečteno 36 261×
Přečteno 25 412×
Přečteno 23 832×
Přečteno 20 213×
Přečteno 17 921×