Jump to content

[Object-C] - Constructori si Deconstructori - POO


Arnautu
 Share

Recommended Posts

constructorii sunt apelati la intializarea unui obiect, iar deconstructorul la distrugerea lui ( dezalocarea lui ).

 

exemplu obiect:

 

class Complex

{

float real,imaginar;

public:

Complex(float r,float im)

{

real = r; imaginar = im;

}

}

 

 

orice obiect are un constructor si deconstructor, chiar daca nu il scrii tu, el exista.

tu poti suprascrie acest constructor, dand acelasi nume functiei ca si numele clasei. ca in exemplul mai sus.

deconstructorul se suprascrie scriind o functie tot cu numele clasei in plus are in fata ~;

spre exemplu ~Complex(){ .. }

 

exemplu cand se apeleaza constructorul:

 

 

void main()

{

Complex c1(6.3,1.2); // aici se apeleaza constructorul obiectului c1;

} // la iesirea din functie se apeleaza destructorul obiectului c1 pentru ca a fost alocat pe stiva ( in functie static )

 

 

alt exemplu:

 

void main()

{

Complex *c = new Complex(4.5,2.4); // apelare constructor

delete c; // apelare deconstructor

}

 

 

 

Constructorii de copiere sunt constructori care primesc ca parametru o referinta la un obiect deja creat. scopul acestui constructor este de a copia datele din alt obiect in obiectul tau ( de acelasi tip ). Acest lucru esti folositor atunci cand ai pointeri in clasa ta, iar cu operatorul = nu se pot copia datele in noul obiect, ex Obiect a = b; in a toate datele or sa fie ca si in b, deci pointerii or sa fie aceasi ceea ce nu e de dorit.

 

exemplu constructor de copiere:

 

Complex(const Complex &ob)

{

re = ob.re;

im = ob.im;

}

 

de asemenea intr-un constructor de copiere, se pot accesa variabilele private sau functii din obiectul copiat pentru ca tu esti deja in clasa de acel tip. re si im din exemplu sunt date private.

un constructor de copiere trebuie sa primeasca ca parametru un const la clasa sa.. altfel nu este constructor de copiere

 

headerul din exemplu:

 

class Complex

{

float re,im;

 

public:

Complex(float re=0,float im=0)

{

this->re = re;

this->im = im;

}

Complex(const Complex &ob)

{

re = ob.re;

im = ob.im;

}

float get_real();

float get_imag();

void set_real(float a);

void set_imag(float a);

Complex &operator+(Complex &c);

void print_complex(ostream &out=cout);

float modul();

 

};

Edited by Cdorsu
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.