CyberPress.Sopron

(http://www.cyberpress.hu/)

Rovat: Dr. Bit

2001. június 18., hétfő 11:34


Programozzunk együtt!

A new és delete utasítás II.

A new és delete utasítás II.

 

Az elõzõ alkalommal átnéztük a new és delete -el való dinamikus memóriakezelést. Most megismerkedünk az objektum-orientált programozás (OOP) alapjaival, vagyis az objektumok dinamikus kezelésével.

Mint láttuk, a
*; // Mutato -re
nev=new ; // Memoria lefoglalas

hatására lefoglalódik sizeof(tipus) byte memória. Az objektumoknál ugyanez a helyzet, egy osztály magában is típus értékû, így a "C-s"

struct struktúra struktúra_peldany

helyett egyszerûen a következõvel is létrehozhatunk további osztályokat:

osztaly osztaly_peldany

A következõ programrész bemutatja, hogyan lehet az osztályokat (objektumokat) dinamikusan kezelni. (Ne ijedj meg, ha nem érted a forrás minden részletét - a következõkben mindenrõl részletesen szó lesz. Egyelõre elég annyit megjegyezni, hogy a class a C++ -ban lényegében a struct-tal megegyezõ funkciójú, de mindemellett több lehetõséget kínál. Minderrõl részletesen a jövõben!)

// OOP_PL_1.CPP - Egyszeru pelda a dinamikus OOP bemutatasara

#include
class tpelda // Pelda osztaly
{
int szam; // Egy 'int' tipusu valtozo
};

void main(void)
{
tpelda *pelda; // Letrehozunk egy mutatot 'pelda' nevvel
if (!(pelda = new tpelda)) // A 'pelda' mutato segitsegevel megprobalunk
{ // memoriat foglalni az osztaly reszere...
cerr << "Nem sikerult lefoglalani memoriat!!";
exit (1); // Ha nem sikerul, akkor kilepunk...
}

delete pelda; // Toroljuk 'pelda'-t. - Memoria felszabaditasa

// Program vege

Nos, itt már látható volt a lényeg: az objektumokat ugyanúgy kezelhetjük, mint bármely más memóriaegységet, és bátran használhatjuk a dinamikus memóriakezeléshez a new és delete operátorpárost. Ezt a kis kitérõt azért tartottam fontosnak, hogy az OOP során már egyértelmû legyen a new és delete használata, és így fel tudjuk használni a következõ nagy témakörhöz, az Objektum Orientált Programozás megismeréséhez.