36 lines
1.4 KiB
Markdown
36 lines
1.4 KiB
Markdown
# CPP10 — Kopiowanie, przenoszenie i Rule of Zero/Five
|
||
|
||
Karta 10/10 kursu **C++ · Rok 2 · Semestr 1**. Standard: C++20.
|
||
Oś merytoryczna: A Tour of C++ 3e: sekcje 6.2–6.4. Materiał książkowy jest parafrazowany;
|
||
repozytorium zawiera samodzielne eksperymenty i testy, a nie kopię książki.
|
||
|
||
## Taski
|
||
|
||
| Task | Temat | Dokładny dowód stdout |
|
||
| --- | --- | --- |
|
||
| Task01 | `Głęboka kopia` | `original=7 copy=9 distinct=1` |
|
||
| Task02 | `Przeniesienie własności` | `src_empty=1 value=42` |
|
||
| Task03 | `Rule of Zero` | `copy=alpha original=beta moved=alpha` |
|
||
|
||
Każdy task jest osobnym programem w `src/task0N`. Test kompiluje wszystkie
|
||
jednostki translacji poleceniem zgodnym z `-std=c++20 -Wall -Wextra
|
||
-Wpedantic -Werror`, uruchamia program i porównuje dokładny wynik.
|
||
|
||
## Uruchomienie
|
||
|
||
```bash
|
||
stemctl build native-amd64 cpp CPP10 1
|
||
stemctl test native-amd64 cpp CPP10 1
|
||
stemctl test native-amd64 cpp CPP10 2
|
||
stemctl debug native-amd64 cpp CPP10 3
|
||
```
|
||
|
||
Lokalnie można użyć `make build`, `make test TASK=task02` i
|
||
`make trace TASK=task03`. Ślad debuggera trafia do `.stem/artifacts`.
|
||
|
||
## Granica semestru
|
||
|
||
Ta seria nie uczy API RTOS, zaawansowanych kontenerów STL ani
|
||
współbieżności. Są to osobne bloki następnych semestrów opisanych w
|
||
`/home/user/dev/keys/cxx.md`.
|