Třída CVector – konstruktory a destruktor
Rozšiřte realizovanou třídu CVector na základě následujícího kódu o konstruktory a destruktor. Postupujte podle následujících pokynů.
Realizujte konstruktory pro následující definice proměnných (kód opět postupně přidávejte pomocí podmíněného překladu):
{ // následující kód vložte na začátek funkce main
CVector
v1; // implicitní konstruktor – vynuluje všechny
proměnné
CVector v7[5]; // pro pole se volají implicitní
konstruktory
CVector *pv1 = new CVector; // konstruktor by se měl volat i při alokaci
// destruktor se volá při delete
#if 0
CVector v2(10); // konverzní konstruktor z int – naalokuje místo (iCapacity) podle daného parametru. iSize bude stejné. Pole nulované.
CVector v3(10,8.2); // použijte stejný konstruktor jako u konverzního pro int (v2) s použitím implicitního parametru. První parametr značí počet alokovaných prvků - všechny se naplní danou hodnotou
CVector v22(v2); // kopy konstruktor – vytvoří hlubokou kopii
CVector *pv2 = new CVector(v3); // při alokaci je možné určit typ použitého konstruktoru
CVector v4(5.1); // konverzní konstruktor z double – naalokuje místo pro jeden prvek a do něj umístí danou hodnotu.
double InitPole[6] = {1, 2, 3.4, 5.6, 45.67, 0};
CVector v5(6,20,InitPole); // konstruktor ze tří prvků: iSize, iCapacity, pole hodnot
CVector v6(“5;10 [1 2 3.4 5.6 45.67]“ ); // konverzní konstruktor z řetězce – formát jako u Print.
#endif
// zajistěte korektní manipulaci s pamětí
return 0; // po odladění této části kódu zakomentujte
// aby došlo k otestování chování v původním main
}
Pokračujte v příkladu z minulého cvičení. Nejprve otestujte dodaný kód v samostatném bloku, následně i s původním main.
Nejprve napište pro třídu CVector destruktor – může volat funkci Deallocate. Do destruktoru můžete vložit pro informaci tisk metodou Print a kontrolovat kolik objektů se pomocí destruktoru ruší.
Napište
pro třídu CVector konstruktory tak, aby šel realizovat výše
uvedený kód s definicemi proměnných.
Správnost ověřte pomocí
tisku proměnných pomocí metody Print.
Konstruktory, které
nestihnete na cvičení si promyslete a doprogramujte za DU.
Spusťte program včetně původního main a všimněte si, že (při správně napsaném programu) se odalokují nové proměnné v1,... pomocí destruktoru. Původní proměnné d1,... jsou odalokovány pomocí Deallocate, ale destruktor je na ně volán také.
poslední úpravy 2018-10-23