na obsah klávesové zkratky na hlavní stránku na menu

Čtvrté cvičení – dynamická alokace

Na tomto cvičení jsme nastínili odchylky v alokaci paměti mezi jazyky C a C++. Zmínili jsme operátor new a delete.

Obsah cvičení

Toto cvičení bylo pojato poněkud prakticky. Dobrali jsme problematiku přetěžování operátorů a ukázali jsme si rozdíl v přetěžování prefixové a postfixové varianty unárních operátorů. Dále jsme zmínili klíčové slovo friend, které se v jistých situacích používá k obcházení zapouzdření. Poté jsme probrali dynamickou alokaci z pohledu C++. Uveden byl operátor new, new[], delete a delete[].

Přepište třídu Matice tak, aby využívala dynamickou alokaci z C++. Třída Matice bude reprezentovat matici rozměru NxN. Správnou velikost předejte v konstruktoru. Datové položky alokujte dynamicky s pomocí výše uvedených operátorů. Nezapomeňte na řádnou destrukci objektu. Vyřešte kompatibilitu všech dříve napsaných operátorů. V případě nesprávných rozměrů jednotlivých operandů vypište chybovou zprávu a ukončete program. Nezapomeňte správně ošetřit paměť při přiřazování a kopírování instancí.
Vytvořte třídu Řetězec, která bude reprezentovat dynamicky alokované pole znaků. Přidejte vhodné konstruktory, destruktor, operátor + a += pro připojení nového řetězce na konec (bude možné připojit instasnci třídy Řetězec nebo řetězec const char* z jazyka C) a přiřazovací operátor (=), který umožní přiřadit jinou instanci téže třídy nebo céčkový řetězec. Dále doplňte operátor indexace ([]), operátor porovnávání (==, !=) — porovnávat bude možné instance třídy Řetězec nebo instanci a řetězec z jazyka C — a metody pro zjištění délky a kapacity řetězce. Kapacita řetězce je velikost předalokovaného pole znaků a bude se zvětšovat skokově v případě, že pole nebude stačit pro uložení řetězce. Délka řetězce je počet znaků tvořících řetězec. Délka bude vždy menší nebo rovna kapacitě řetězce.