Files
lab-cpp-copy-move/answers/solutions.md
T
2026-07-21 20:12:59 +02:00

1.2 KiB

Odpowiedzi — CPP10

Rozróżnić kopię od przeniesienia i wybrać Rule of Zero dla bezpiecznego typu zasobowego.

Task01 — Głęboka kopia

Zaimplementuj kopię bufora tak, aby dwa obiekty nie współdzieliły jednej komórki.

Oczekiwany stdout: original=7 copy=9 distinct=1.

Pliki dowodu: src/task01/main.cpp.

Wynik nie jest oceniany wzrokowo: test kompiluje kod bez ostrzeżeń, uruchamia go i wykonuje dokładne diff z plikiem tests/expected.

Task02 — Przeniesienie własności

Przenieś bufor move-only i pozostaw obiekt źródłowy w poprawnym stanie pustym.

Oczekiwany stdout: src_empty=1 value=42.

Pliki dowodu: src/task02/main.cpp.

Wynik nie jest oceniany wzrokowo: test kompiluje kod bez ostrzeżeń, uruchamia go i wykonuje dokładne diff z plikiem tests/expected.

Task03 — Rule of Zero

Zbuduj typ z bezpiecznych składowych standardowych bez własnego destruktora i operacji copy/move.

Oczekiwany stdout: copy=alpha original=beta moved=alpha.

Pliki dowodu: src/task03/main.cpp.

Wynik nie jest oceniany wzrokowo: test kompiluje kod bez ostrzeżeń, uruchamia go i wykonuje dokładne diff z plikiem tests/expected.