na obsah klávesové zkratky na hlavní stránku na menu

Šesté cvičení – virtuální metody

Při práci s objekty v C++ se často setkáme s pojmy virtuální metody, časná a pozdní vazba či zastínění metody. Na této hodině jsme si osvětlili všechny tyto termíny.

Obsah cvičení

Od minulého cvičení bylo nutné dobrat některé další techniky v objektovém programování. Zmínili jsme virtuální dědičnost, nebo-li rozdíl mezi časnou a pozdní vazbou, i zastiňování metod u potomků. Ukázali jsme si vlastnost „Potomek může zastoupit předka”. Podrobně jsme vysvětlili konverzní operátory, které nově přibyly v C++.

Ve zdrojovém kódu odkázaném níže je řada chyb. Vaším úkolem bude opravit chyby v kódu tak, aby šel program přeložit, aby vypsal přesně níže uvedený výstup a aby program Valgrind nehlásil žádný únik paměti. Chyby v programu jsou několika druhů, jejich oprava nevyžaduje větší zásahy do kódu (budete vepisovat pouze jednotlivé řádky nebo dokonce jen pár znaků). Sepište seznam všech chyb a nakreslete si graf dědičnosti tříd. Nesmíte měnit obsah funkce main()!!
Chybný zdrojový kód, který je nutné opravit

Výstup programu má být při neexistenci chyb následující:

kreslim nuhelnik s 4 vrcholy na platno 3
kreslim bod [-2, -1] na platno 3
kreslim bod [2, -1] na platno 3
kreslim bod [2, 1] na platno 3
kreslim bod [-2, 1] na platno 3
kreslim caru z [-2, 2] do [5, 12] na platno 3
kreslim bod [-1, 1] na platno 3
kreslim nuhelnik s 3 vrcholy na platno 3
kreslim bod [-1, 0] na platno 3
kreslim bod [1, 0] na platno 3
kreslim bod [0, 0] na platno 3
kreslim nuhelnik s 5 vrcholy na platno 3
kreslim bod [-1, -1] na platno 3
kreslim bod [1, -1] na platno 3
kreslim bod [1, 1] na platno 3
kreslim bod [0, 2] na platno 3
kreslim bod [-1, 1] na platno 3
kreslim nuhelnik s 5 vrcholy na platno 3
kreslim bod [-1, -1] na platno 3
kreslim bod [1, -1] na platno 3
kreslim bod [1, 1] na platno 3
kreslim bod [0, 2] na platno 3
kreslim bod [-1, 1] na platno 3

Program Valgrind musí hlásit, že nedošlo k úniku paměti.

==3655== All heap blocks were freed -- no leaks are possible