===== Krátké otázky ===== Odpovědi na krátké otázky by obvykle měly být krátké a vejít se do věty nebo dvou. Pokud vám přijde, že správná odpověď je komplikovaná, pokuste se vystihnout podstatu věci -- například rozdílů mezi ''new'' a ''malloc'' je mnoho, ale ten největší a nejdůležitější je, že ''new'' zavolá konstruktor; věci jako že je to operátor, který se dá přetížit, nebo že je to konstrukt z C%%++%%, zatímco ''malloc'' je z C, jsou vedlejší. Odpovědi, které tu jsou uvedeny, nejsou jediné možné, ale vaše odpovědi by měly být podobné. Tyto otázky jsou obvykle hodnoceny jedním bodem. * Jaký je rozdíl mezi třídou (''class'') a strukturou (''struct'')? ++ řešení | \\ //Pouze ve výchozí viditelnosti členů, třída má ''private'' a struktura má ''public''.// ++ * Jak se liší přístupová oprávnění ''public'', ''private'' a ''protected''? ++ řešení | \\ //''public'' - neomezený přístup, ''protected'' - pouze pro třídu a její potomky, ''private'' - pouze pro třídu.// ++ * Umožňuje C%%++%% vícenásobnou dědičnost? ++ řešení | \\ //Ano.// ++ * Čím se liší enum a enum class? ++ řešení | \\ //Enum class vynucuje typovou bezpečnost při používání prvků enumerace.// ++ * Které typy jsou předávány hodnotou a které referencí? ++ řešení | \\ //Všechny se předávájí hodnotou.// ++ * V jakém pořadí jsou vyhodnoceny argumenty funkcí a metod? ++ řešení | \\ //Pořadí není určeno.// ++ * Co znamená RAII? ++ řešení | \\ //Resource acquisiton is initialization.// ++ * K čemu slouží RAII? ++ řešení | \\ //K automatickému uvolnění prostředků, např. paměti.// ++ * K čemu slouží klíčové slovo const? ++ řešení | \\ //Označuje konstatní, tj. neměnitelné typy (proměnné).// ++ * K čemu slouží konstruktory? ++ řešení | \\ //Předepisují funkci prováděnou při vzniku objektu.\\ Zavádějí invarianty objektu.// ++ * K čemu slouží destruktory? ++ řešení | \\ //Předepisují funkci prováděnou při zániku objektu.\\ Ukončují invarianty objektu.// ++ * Co znamená "resource leak"? ++ řešení | \\ //To, že některé prostředky nejsou nikdy uvolněny, např. paměť.// ++ * V jakém pořadí se volají destruktory datových prvků třídy? ++ řešení | \\ //V opačném pořadí, než byly deklarovány v těle třídy.// ++ * Jaký je rozdíl mezi procesem a vláknem? ++ řešení | \\ //Proces se skládá z vláken, procesy mezi sebou nesdílejí paměť (vlákna ano).// ++ * K čemu slouží klíčové slovo ''mutable'' u lambda funkce? ++ řešení | \\ //Určuje, že v těle lambda funkce můžeme měnit hodnotu proměnných zachycených kopií.// ++ * Můžeme šabloně dát i jiný argument, než typ? ++ řešení | \\ //Ano, například ''int''// ++ * Jaký je rozdíl mezi ''new'' a ''malloc''? ++ řešení | \\ //''new'' volá konstruktory.\\ ''new'' respektuje typy, tj velikost a konstruktory// ++ * Jaký je rozdíl mezi ''NULL'' a ''nullptr''? ++ řešení | \\ //''NULL'' je makro, ''nullptr'' je součást jazyka. Nemůže dojít k implicitní konverzi ''nullptr'' na ''int''.// ++ * Jaké jsou úrovně záruky výjimkové bezpečnosti (exception safety)? ++ řešení | \\ //Žádná, základní, silná, neházející.\\ Weak, Basic, Strong, No-throw.// ++ * Co se stane, pokud nesynchronizujeme vlákna při přístupu do paměti? ++ řešení | \\ //Nastane nedefinované chování v podobě tzv. race condition.// ++ //Zalomený řádek znamená alternativní odpověď.//