Jste zde

C++

Méně známé skutečnosti o C a C++: Implicitní parametr funkce nemusí být konstanta

C++ v rámci větší uživatelské přítulnosti poskytuje kromě přetěžování (overload) funkcí/metod také implicitní (default) hodnoty parametrů funkcí/metod (na rozdíl od Javy, u které mně tento syntaktický cukr celkem chybí). Většina programátorů v C++ o tom ví a tuto skutečnost využívá. Co už se ale ví méně, je to, že implicitního parametr funkce nemusí být konstanta. V tomto příspěvku se nebudu zabývat tím, do jaké míry je to vhodné a použitelné (ve většině případů to totiž opravdu vhodné není), ale pouze tím, co C++ v tomto směru umožňuje.

Méně známé skutečnosti o C++: šablony jsou Turingovsky úplné

Oproti Java Generics či C# Generics (které jsou vlastně pouze typově parametrizované třídy) jsou šablony v C++ velice mocný nástroj - o tom určitě nikdo nepochybuje. Co se ale ví už méně, tak je to, že tento prvek jazyka C++ je turingovsky úplný (Turing-complete), čili, lidově řečeno, pomocí něj lze vyjádřit libovolný výpočet.

Méně známé skutečnosti o C a C++: NULL neslouží k přenositelnosti kódu

Tentokrát bych něco rád napsal o mýtu, který říká, že makro NULL slouží pro psaní přenositelného kódu, protože ne všechny architektury musí mít "nulový ukazatel" s adresou 0, ale daná adresa může být např. 0xFFFFFFFF. Ačkoliv druhá část předchozí věty pravdivá může být, tak první část nikoliv. Na konci příspěvku ukážu, že použitím makra NULL lze dokonce přenositelnost v určitých případech zhoršit!

Méně známé skutečnosti o C a C++: C není jen ANSI C a C++ není jen C++98

Tímto zahajuji další "seriál" týkající se jazyků C a C++. Chtěl bych v něm upozornit na některé skutečnosti, které si ne každý uvědomuje a také některé vlastnosti těchto jazyků, které nejsou příliš známé a nebo se jejich důležitost podceňuje, což mnohdy může vést k nečekaným problémům. Objeví se zde určitě i zajímavé vlastnosti či konstrukce a využití těchto jazyků, o kterých se obecně neví, že něco takového je v těchto jazycích možné.

Zajímavé úlohy pro programátory v C a C++ #5

Tak jsem po kratší odmlce zpět a přináším další zajímavou úlohu z jazyka C++. Dnes se moc programovat nebude, ale o to víc bude třeba přemýšlet :). Ještě bych chtěl poznamenat, že úlohy budu přinášet nepravidelně podle toho, jak mě vyjde čas a zda mě něco zajímavého napadne nebo na něco narazím.

Zajímavé úlohy pro programátory v C a C++ #4

Zkouškové skončilo a já tak mohu v klidu přinést další zajímavou úlohu. Tentokrát budeme programovat pouze v C++ a cílem bude vytvořit program, který bude provádět zadanou činnost a použít při tom co nejmenší počet příkazů.

Zajímavé úlohy pro programátory v C a C++ #3

Zkouškové období již začalo, ale (zatím) toho není tolik, abych nemohl přinést další zajímavou úlohu :). Tentokrát si vyzkoušíme tvorbu maker.

Zajímavé úlohy pro programátory v C a C++ #2

Tak jsem opět zde a s druhou úlohou. Tentokrát si dáme něco "napříč spektrem norem" a budeme programovat jak v C, tak v C++. Myslím si, že vás to zaujme :).

Zajímavé úlohy pro programátory v C a C++ #1

Dnešním dnem zahajuji seriál, ve kterém mohou čtenáři řešit zajímavé úlohy z oblasti programovacích jazyků C a C++. Na čtenáři bude najít správné řešení zadané úlohy a podělit se s ním s ostatními do komentáře. Úlohy nebudou nikterak dlouhé ani časově pracné - půjde především o znalost těchto jazyků (a jejich možností), programovacích technik a jazykových idiomů. Pokud se žádnému z čtenářů nepodaří najít správné řešení, tak po určité době zveřejním své (komentované) řešení a rád zodpovím případné dotazy (to se týká i nejasnostech v zadání). Nuže, pojďme se podívat na první úlohu :).

Mixins

Na jednom týmovém sezení (při řešení projektu do předmětu Počítačová grafika) jsem nadhodil techniku známou jako Mixins. Bohužel jsem ji tehdy nedokázal dostatečně vysvětlit a její použití nebylo v dané situaci vhodné, takže bych to chtěl tímto příspěvkem napravit a ukázat, že tato technika je v praxi velice užitečná a že využití mixinů by nemělo být obecně považováno za "bad practice" či za anti-vzor.

Stránky

Přihlásit se k odběru RSS - C++