Od C++11 je k dispozici specifikátor override
. Lze pomocí něj označit virtuální metodu, která předefinovává (anglicky overrides) virtuální metodu z nadtřídy. V příspěvku uvedu dva důvody, proč je dobré všechny takovéto metody tímto specifikátorem označovat.
C++
Možná jste se již setkali s C++ kódem, kde se místo size_t
využívalo std::size_t
. V tomto krátkém příspěvku se dozvíte, jaký je v nich rozdíl a který z nich používat.
Dnes se podíváme na velmi užitečný koncept zvaný RAII, který usnadňuje správu prostředků a vede ke kvalitnějšímu kódu bez duplicit.
V příspěvku se podíváme na to, proč v C++ při vkládání objektů do std::map
přes operator[]
vyvstává potřeba mít definovaný defaultní konstruktor. Následně si ukážeme způsoby vkládání objektů, při kterých tato potřeba odpadá.
Od C++11 lze napsat for
cyklus přes daný výčet hodnot (např. 1, 2, 2, 8, 13
) mnohem jednodušším způsobem, než tomu bylo v C++98. V tomto krátkém příspěvku se podíváme, jak na to. Mrkneme se i na jedno rozšíření připravovaného standardu C++1z, které kód ještě o něco zjednoduší.
V dnešním příspěvku se podíváme na to, proč je dobré psát kód na jedné úrovni abstrakce (angl. single level of abstraction). Ukážeme si několik příkladů kódu, který tomuto principu nevyhovuje, poté jej upravíme a uvidíme, jaké výhody nám to přineslo.
Dnes bych chtěl krátce zmínit dva z mých oblíbených přednášejících o programování, včetně odkazů na shlédnutí některých jejich přednášek.
O důležitosti snižování počtu #includovaných hlavičkových souborů v C a C++ jsem zde již psal. Důvodem je urychlení překladu, především pak toho inkrementálního během vývoje. V dnešním příspěvku se podíváme na nástroj include-what-you-use, který umí zbytečné #includy detekovat a případně i automaticky odstranit či nahradit za dopředné deklarace.
Dnes se podíváme na to, proč se běžně psaný cyklus tvaru for (unsigned int i = 0; i < container.size(); ++i)
může zacyklit.
Od C++11 je k reprezentaci nulového ukazatele možno použít nové klíčové slovo nullptr
. V příspěvku se dozvíte, proč byste měli používat právě nullptr
místo NULL
či 0.