Documente Academic
Documente Profesional
Documente Cultură
Destructorul este apelat automat la iesirea din blocul in care este recunoscut acel obiect.
In situatiile in care un tip de date are ca membri pointeri, este necesara implementarea unui
constructor pentru initializare si a unui constructor de copiere.
Utilizarea functiilor inline se justifica doar in situatiile in care codul general de compilator pentru
executia corpului functiei este mai mic decat codul generat pentru apel si revenire.
Mecanismul mostenirii permite crearea unei ierarhii de clase si trecerea de la clasele generale la
cele particulare. Procesul implica la inceput definirea clasei de baza care stabileste calitatile
commune ale tuturor obiectelor ce vor deriva din baza. Prin mostenire, un obiect poate prelua
proprietatile obiectelor din clasa de baza.
7. Care sunt deosebirile intre o functie membra a unei clase si o functie prietena a unei clase ?
Prototipurile functiilor prietene sunt precedate de cuvantul cheie friend. Spre deosebire de
functiile membre, functiile prietene ale unei clase nu poseda pointerul implicit this. De aceea,
deosebirea esentiala consta in faptul ca functia prietena are un parametru in plus fata de functia
membru.
8. Ce fel de metode pot actiona asupra datelor membre statice ale unei clase ?
Data membra static figureaza intr-un singur exemplar. Ea poate fi modificata prin metode
statice. Apelul unei metode statice poate fi realizat ca un apel al unei metode obisnuite sau
folosind operatorul de rezolutie :: . Daca metoda static nu este asociata unui obiect anume, in
corpul functiilor statice nu pot fi accesate decat datele membre statice.
Functiile prietene
11. Ce observatie aveti in legatura cu metodele definite in interiorul clasei si functiile inline ?
In cazul metodelor unei clase, daca acestea sunt definite in interiorul clasei, ele sunt considerate
implicit functii inline.
In cazul in care se doreste ca toate functiile membre ale unei clase sa aiba acces la membrii
privati ai altei clase, prima clasa poate fi declarata clasa prietena pentru cea de-a doua clasa.
Destructorii sunt metode ale claselor care actioneaza in sens invers, complementar fata de
constructori. Destructorii elibereaza memoria alocata de constructori, sunt apelati automat la
iesirea din blocul in care este recunoscut acel obiect.
Functiile inline anunta compilatorul sa nu mai genereze instructiunile in cod masina necesare
apelului si revenirii, ceea ce conduce la marirea timpului de compilare in favoarea micsorarii
timpului de executie.
15. Constructorii unei clase pot primi ca parametri instante ale clasei respective ? Daca da, in ce
conditii ?
Constructorii unei clase nu pot primi ca parametri instante ale clasei respective, ci doar pointeri
sau referinte la instantele clasei respective.
17. Cum se aloca memoria pentru datele membre nestatice in momentul delcararii mai multor
obiecte din aceeasi clasa ?
Datele membre nestatice se aloca distinct pentru fiecare instanta (atribute ale instantei) a clasei.
Structurile reprezinta cazuri particulare ale claselor, putand avea nu numai date membre sau
campuri de date, ci si functii membre. La structuri, membrii sunt implicit publici, iar la clase
implicit privati. Lipsa unor modalitati de protective a datelor face ca tipurile de date introduse
prin structuri sa nu poata fi strict controlate in ceea ce priveste operatiile executate asupra lor.
In cazul claselor, modul de acces la membrii tipului de date poate fi schimbat prin utilizarea
modificatorilor de control ai accesului: public, private, protected.
Incapsularea informatiei reflecta faptul ca atributele instanta si metodele unui obiect il definesc
doar pe acesta. Metodele si atributele unui obiect sunt incapsulate in obiect. Obiectul detine
controlul asupra atributelor instanta, care nu pot fi alterate de alte obiecte. Singura exceptie o
reprezinta atributele de clasa care nu pot fi incapsulate, fiind partajate intre toate instantele
clasei. Aceasta tehnica de plasare a valorilor in datele membre private ale obiectului reprezinta
un mecanism de ascundere a datelor.
Nivelul de acces la membrii unei clase poate fi private(pot fi accesati doar prin metodele clasei,
nivel implicit), protected( prin functiile membre ale clasei derivate), public(din orice punct al
domeniului de existent a clasei), friend(prin functiile membre ale functiei prietene specificate).
class cls1{
//
int f1(int, char);
//
};
class cls2{
//
friend int cls1::f1(int, char);
//
};
Datele membre statice exista intr-un singur exemplar, comun pentru toate instantele clasei.
Pentru data membra static se rezerva o zona de memorie continua obiectelor.
Data membra static nu apartine unui anume obiect, ea apare prefixata de numele clasei si
operatorul de apartenenta.
28. O clasa poate avea mai multi destructori ? Daca da, in ce conditii ?
La definirea unei clase, se definesc si metodele acesteia. Fiecare obiect are acces la un set de
functii care descriu operatiile care pot fi executate asupra lui. Metodele pot fi folosite de
instantele clasei respective, dar si de instantele altor clase prin mecanismul mostenirii.
31. Nici functiile prietene, nici metodele statice ale unei clase nu primesc ca argument implicit
pointerul this. Explicati care sunt, totusi, diferentele dintre ele.
Tipuri abstracte de date care incapsuleaza atat elemente de date pentru care s-a adoptat un
anumit mod de reprezentare, cat si operatiile asupra datelor.