pridani poznamek ke containerum zatim pouze s vectory poznamky z hodim maji ted vlastni podslozku lehka oprava kodu vsede mozne, hlavne pridani cpp pro lepsi cteni a oprava drobnych chybek
2.1 KiB
s- výjimky
-
reference
-
konstantní metody/atributy
-
přetížené operátory
-
indexování + volání funkce (oboje jsou operátory)
-
lambda funkce
-
cvičení
- conteinery: vector, list, mapa
Výjimky
- Pozn: "Častokrát je možná lepší, když ten program spadne, než když se chová špatně."
- Řešení neočekávaných chyb
- Může se to stát náhodně (např. poškozený/přeplněná paměť)
- používá se try a catch
try {
# kod kde nastane vyjimka / problem
}
catch (typ vyjimky) {
# kod, ktery se s vyjimkou popasuje
}
knihovna: #include <exception>
Pak existuje ještě třetí operátor a to operátor throw, který vyvolává výjimku.
např throw "Deleni nulou.\n -> vyvolá výjimku Deleni nulou\n
``
Ošetření více výjimek
catch (typ vyjimky) {
# kod, ktery se s vyjimkou popasuje
}
catch (...) {
# univerzalni reseni vyjimek pro vsechno ostatní
}
Typy výjimek
<exceptions>std::exception- bázová třídavirtual what()- vrací řetězec výjimkyterminate()- ukončí program, když se něco pokazí?
<stdexcept>std::out_of_range- nestihl
- nestihl
<new>- nestihl
- nestihl
Reference
-
ukazatelé byly označeny komunitou C++ jako nebezpečné např. kvůli nejasné syntaxi
-
Reference je obdoba konstantního ukazatele
-
nelze vytvořit prázdnou referenci, je svázána s hodnotou a ne adresou (?)
-
Pokud možno pls používat reference
-
Reference
Přetížené operátory
-
stejně jako funkce lze přetížit operátory (protože to jsou vlastně takové funkce)
-
operátory definované pro dané datové typ nelze přetížit
-
týká se to hlavně operátorů pro instance tříd
-
např nelze přetížit:
..*::?:sizeof
Přetížení binárních operátorů
např: +, -, *, ..., +=, -=, ...
používá se @
např: x @ y
Přetížení unárních operátorů
Přetížení postfixových operátorů
Lambda funkce
- existuje něco jako funktor :C
- místo funktoru mám lambda funkce
- každou lambda funkci můžu přepsat do funktoru