Konstruktorok és a destruktor, programozás C és C

Használat előtt a lehetőség is szükség lehet inicializálni néhány adatot. Vegyük például a sorban meghatározott osztályból korábban ebben a fejezetben. Használat előtt kádban sorban, hozzá kell rendelni a változók és rloc sloc értéke 0 az init () függvény. Mivel a követelmény inicializálási rendkívül gyakori, a C ++ Call kívánnak létrehozni, inicializálni tárgyak alatt létrehozását. Ez az automatikus init-alizatsiya végezzük, hogy a funkció az úgynevezett konstruktor.

A konstruktor függvényt, amely tagja az osztály, amelynek a neve megegyezik a neve az osztály, egy speciális funkció típusát. Példaként az alábbiakban bemutatja, hogyan az osztály sorban alakítjuk úgy, hogy lehet használni az inicializáláshoz kivitelező:

/ / Létrehozunk egy osztályát
osztályú várakozási sor int q [100];
int sloc, rloc;
nyilvános:
várakozási sor (); // tervező
void qput (int i);
int qget ();
>;

Megjegyezzük, hogy a sorban () konstruktor nincs visszatérési típus. A C ++ kivitelező funkciók nem ad vissza értéket.

A kód, amely megvalósítja a funkció a sorban (), az alábbiak szerint:

// tervező
sorban. várakozási sor ()
sloc = rloc = 0;
cout <<"Queue initialized. \n";
>

Megjegyezzük, hogy a kimenő üzenet «sorban inicializálni» illusztrálására szolgál Rabo dizájner. Az általános gyakorlat szerint, a legtöbb tervezők nem vesznek részt a visszavonás vagy adatbevitel. Hozzá vannak szokva a elindulni.

Ezenkívül konstruktor a destruktor. Sok esetben, mielőtt az objektum kell bizonyos műveleteket. Helyi objektumokat hoz létre, amikor belépnek a korom-lános blokk és elpusztult, amikor a program kilép. Global tárgyak elpusztítják zhayutsya végén a program. Sok oka, hogy így van destruktor. Például előfordulhat, hogy szabadítson fel a memóriát, amelyet korábban fenntartott-ment. A C ++, felelős a hatástalanítására a destruktor. Ez ugyanaz a neve, mint a konstruktív-tor, de adunk az ikonra

Az alábbiakban variáns osztály sorban, a kivitelező és a destruktor. (Meg kell jegyezni, hogy a sorban az osztály nem kell egy destruktor, ezért itt csak illusztráció.)

// létrehozása osztályát
osztályú várakozási sor int q [100];
int sloc, rloc;
nyilvános:
várakozási sor (); // tervező

várakozási sor (); // destruktor
void gput (int i);
int qget ();
>;
// tervező
sorban :: sort ()
sloc = rloc = 0;
cout <<"Queue initialized.\n";
>
// destruktor
sorban.

várakozási sor ()
cout <<"Queue destroyed.\n";
>
Annak bizonyítására, hogy a tervező munkáját és a destruktor, de az alábbiakban mutatjuk be-wai változata a program:
#include
// létrehozása osztályát
osztályú várakozási sor int q [100];
int sloc, rloc;
nyilvános:
várakozási sor (); // tervező

várakozási sor (); // destruktor
void gput (int i);
int qget ();
>;
/ / Tervező
sorban :: sort ()
sloc = rloc = 0;
cout <<"Queue initialized.\n";
>
// destruktor
queue ::

várakozási sor ()
cout <<"Queue destroyed.\n";
>
void sorban :: qput (int i)
if (sloc == 99) cout <<"Queue is full.\n";
return;
>
sloc ++;
q [sloc] = i;
>
int sorban :: qget ()
if (rloc == sloc) cout <<"Queue underflow.\n";
vissza 0;
>
rloc ++;
vissza q [rloc];
>
int main ()
sorban a, b; // két típusú sorobjektumokat
a.qput (10);
b.qput (19);
a.qput (20);
b.qput (1);
cout < cout < cout < cout < vissza 0;
>

Ez a program megjeleníti a következő szöveg lép:

Sor inicializálja.
Sor inicializálja.
Október 20 január 19
Sor elpusztult.
Sor elpusztult.

Kapcsolódó cikkek