86 lines
2.1 KiB
Markdown
86 lines
2.1 KiB
Markdown
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řída
|
|
- `virtual what()` - vrací řetězec výjimky
|
|
- `terminate()` - 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
|
|
|
|
# Conteinery
|
|
|
|
## Vector
|
|
|
|
## List
|
|
|
|
## Map
|