Documente Academic
Documente Profesional
Documente Cultură
Introducere
Vom prezenta n acest capitol
compunerea claselor
noiunile de clase friend i funcii friend
pointerul this
modul n care obiectele pot fi create i sterse
dinamic
Sumar
Compunerea claselor: Obiecte ca membri
ai claselor
Funcii friend i clase friend
Pointerul this
Alocarea dinamic a memoriei cu operatorii
new i delete
altor clase
Date
Date
Date
compunere
Asocierea
obiectele parte i ntreg pot avea perioade de existen
diferite
n C++, asocierea poate fi modelat prin
includerea n clasa ntreg a unor referine la obiecte din
alte clase
folosirea de ctre funciile membre ale clasei ntreg de
parametri de tipul claselor parte
Sumar
Compunerea claselor: Obiecte ca membri ai
claselor
Funcii friend i clase friend
Pointerul this
Alocarea dinamic a memoriei cu operatorii
new i delete
Declaraie friend
class Count
{
friend void setX(Count&, int);
public:
Count(){ x = 0; } // constructor
void print() const { cout << x <<
endl; }//iesire
private:
Funcia este
int x; //data membra
declarat friend n
};
clasa Count i
poate s modifice
void setX( Count& c, int val )
valoarea datei
{ c.x = val; }
membre private x
Sumar
Compunerea claselor: Obiecte ca membri ai
claselor
Funcii friend i clase friend
Pointerul this
Alocarea dinamic a memoriei cu operatorii
new i delete
Pointerul this
Fiecare obiect are acces la propria adres de
Pointerul this
Pointerul this este folosit implicit pentru a referi
Pointerul this
Exemplu
class Test
{
public:
Test( int = 0); // constructor implicit
void print() const;
private:
int x;
};
Test::Test( int a ) { x = a; }
void Test::print() const
{
cout << "
x = " << x
<< "\n this->x = " << this->x
<< "\n(*this).x = " << (*this).x
<< endl;
}
Pointerul this
int main()
{
Test testObject(12);
testObject.print();
return 0;
}
Rezultat:
x = 12
this->x = 12
(*this).x = 12
Pointerul this
Accesul membrilor clasei prin pointerul this
Sumar
Compunerea claselor: Obiecte ca membri ai
claselor
Funcii friend i clase friend
Pointerul this
Alocarea dinamic a memoriei cu
operatorii new i delete
TypeName *typeNamePtr;
alocarea dinamic a memoriei se poate face n
limbajul C prin instruciunea
typeNamePtr = malloc(sizeof(TypeName));
Exemplu
delete typeNamePtr;
Operatorul delete apeleaz destructorul clasei din
care face parte obiectul a crui zon de memorie
urmeaz s fie eliberat, dac n clas acesta este
declarat