Înainte de a utiliza facilitatea poate fi necesară pentru a inițializa unele dintre datele sale. De exemplu, ia în considerare o clasă de coadă definită anterior în acest capitol. Înainte de utilizare coadă de TVA, trebuie să fie atribuite variabilelor și rloc valoare SLOC 0 folosind funcția de inițializare (). Având în vedere că cerința de inițializare este extrem de comună, C ++ apel, doresc să înființeze, inițializa obiecte în timpul creării lor. Acest automat de inițializare-alizatsiya este realizată folosind o funcție care este numit un constructor.
Funcția constructor, care este un membru al clasei și având același nume ca numele clasei, este un tip special de funcție. Ca un exemplu de mai jos arată modul în care coada de clasă transformată astfel încât să fie utilizate pentru constructor de inițializare:
/ / Creați o clasă de toate
class coadă int q [100];
int SLOC, rloc;
publice:
coadă (); // proiectant
void qput (int i);
qget int ();
>;
Rețineți că coada de așteptare () constructorul nu are nici un tip de întoarcere. C ++ funcții de constructor nu poate reveni valori.
Codul care implementează funcția de coadă (), după cum urmează:
// proiectant
coadă. coadă ()
SLOC = rloc = 0;
cout <<"Queue initialized. \n";
>
Rețineți că mesajul de ieșire «coada» inițializată servește pentru a ilustra Rabo tine de designer. În practică normală, majoritatea designeri nu sunt angajate în retragere sau de date de intrare. Acestea sunt utilizate pentru inițializare.
Adăugarea constructor este destructor. În multe cazuri, înainte ca obiectul trebuie să îndeplinească anumite acțiuni. obiecte locale sunt create la intrarea în bloc-corespun- funingine și distruse atunci când ieșirea din program. obiecte globale a distrus-zhayutsya la sfârșitul programului. Există mai multe motive pentru care, așa că destructor. De exemplu, poate fi necesar pentru a elibera memoria care a fost anterior rezervat-MENT. În C ++, este responsabil pentru dezactivarea destructor. Ea are același nume ca și constructiv-tor, dar a adăugat la pictograma
Mai jos este varianta de clasa coada de așteptare, folosind constructor si destructor. (Trebuie amintit faptul că clasa de coadă nu are nevoie de un destructor, așa că aici este doar pentru ilustrare.)
// crearea unei clase de toate
class coadă int q [100];
int SLOC, rloc;
publice:
coadă (); // proiectant
coadă (); // destructor
void gput (int i);
qget int ();
>;
// proiectant
coadă :: coadă ()
SLOC = rloc = 0;
cout <<"Queue initialized.\n";
>
// destructor
coadă.
coadă ()
cout <<"Queue destroyed.\n";
>
Pentru a demonstra munca proiectantului si destructor, dar este prezentată mai jos-wai versiune a programului:
#include
// crearea unei clase de toate
class coadă int q [100];
int SLOC, rloc;
publice:
coadă (); // proiectant
coadă (); // destructor
void gput (int i);
qget int ();
>;
/ / Designer
coadă :: coadă ()
SLOC = rloc = 0;
cout <<"Queue initialized.\n";
>
// destructor
coadă ::
coadă ()
cout <<"Queue destroyed.\n";
>
void coadă :: qput (int i)
if (== SLOC 99) cout <<"Queue is full.\n";
return;
>
++ SLOC;
q [SLOC] = i;
>
int coadă :: qget ()
if (rloc == SLOC) cout <<"Queue underflow.\n";
return 0;
>
rloc ++;
reveni q [rloc];
>
int main ()
coadă a, b; // crea două tipuri de obiecte coadă
a.qput (10);
b.qput (19);
a.qput (20);
b.qput (1);
cout <
>
Acest program afișează următorul text:
Coadă inițializat.
Coadă inițializat.
20 octombrie 19 luna ianuarie
Coadă distruse.
Coadă distruse.