Sunteți pe pagina 1din 12

Intrebari si raspunsuri

Cap.7: Tipuri de date definite de


programator

1. Variabilele tablou si variabilele de tip definit de


utilizator sunt exemple de variabile compuse
(reprezinta date structurate).Care este, totusi,
deosebirea dintre ele?
R: d
2. Ce posibilitati de definire a unor tipuri de date
va ofera limbajul C/C++?
R: Limbajul C ofera posibilitatea de definire a unor noi
tipuri de date cu ajutorul:
- structurilor
-campurilor de biti
-uniunilor
-declaratiilor typedef
-enumerarilor
3. In ce consta diferenta dintre uniuni si
structuri?
R: Uniunile sunt similare cu structurile, diferenta fiind
modul de memorare: aceeasi zona de memorie folosita
in comun de catre toti membrii.

4. Ce restrictii impune folosirea campurilor de


biti?
R:-Tipul membrilor poate fi int sau unsigned int.
-Lungimea este o constanta intreaga din intervalul
[0,15].
-Un camp de biti poate fi operandul unui operator de
referentiere.
-Nu se pot organiza tablouri de campuri de biti.
5. Exista vreo restrictie referitoare la tipul
membrilor unei structuri? Daca da, care este
aceasta?
R: Membrii unor structuri pot fi de orice tip, cu exceptia
tipului structura care se declara. Se admit insa, pointeri
catre tipul structura.
6. Cum se numesc componentele unei structuri?
R: Componentele unei structuri se numesc
membrii(campurile) structurii.
7. Cum se poate da un nou nume unui tip de
date?
R: typedef <tip> <nume_tip>;

Cap. 2: Clase si obiecte


1. Cand actioneaza constructorul unei clase?

R: Apelul constructorului se realizeaza la eclararea unui


obiect.
2. Cand actioneaza destructorul unei clase?
R: Acesta este apelat automat la iesirea din blocul in
care este recunoscut acel obiect.
3. Cand este absolut necesara definirea unui
constructor de copiere?
R: In situatiile in care un tip de data are ca membrii
pointeri, este necesara implementarea unui constructor
de initializare si a unui constructor de copiere.
4. Cand se justifica utilizarea functiilor inline?
R: Utilizarea functiilor inline se justifica doar in situatile
in care codul generat de compilator pentru executia
corpului functiei este mai mic decat codul generat
pentru apel si revenire.
5. Caracteristicile destructorului unei clase.
R: -Destructorul are acelasi nume ca si clasa a caror
metoda este.
-Numele destructorului este precedat de semnul ~.
-O clasa are un singur destructor.
-Daca programul nu a definit un destructor,
compilatorul genereaza automat un destructor pentru
clasa respectiva.
6. Care este utilitatea mostenirii?
R: Utilitatea mostenirii este ca 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?
R: 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?
R: metode statice,
9. Ce functii au acces la membrii privati ai unei
clase?
R: functii prietene, metodele clasei
10. Ce operator permite referirea unui membru al
structurii?
R: operatorul scop :: (de apartenenta), operatorul . sau
->
11. Ce observatie aveti in legatura cu metodele
definite in interiorul clasei si functiile inline?
R: In cazul metodelor unei clase, daca acestea sunt
definite in interiorul unei clase, ele sunt considerate,
implicit, functii inline.
12. O clasa poate fi prietena a altei clase? Daca
da, ce inseamna acest lucru?
R: Da. Astfel functiile membre ale unei clase au acces la
membrii privati ai altei clase(sa fie fc prietene),prima
clasa este declarata clasa prietena pentru cea de-a
doua clasa:
EX. class cls1;

class cls2{ friend cls1;};


13. Ce sunt destructorii?
R: Sunt metode ale claselor care actioneaza in sens
invers, complementar fata de constructori.
14. Ce sunt functiile inline?
R: Sunt functiile care au corpul format di maximum trei
instructiuni si nu contin instructiuni repetitive
(while,for,do-while).
15. Constructorii unei clase pot primi ca
parametri instante ale clasei restpective? Daca
da, in ce conditii?
R: NU, ci doar pointeri sau referinte la instantele clasei
respective.
16. Cine impune comportamentul unui obiect?
R: Este determinat de actiunile pe care obiectul poate
sa le execute (metodele).
17. Cum se aloca memoria pentru datele membre
nestatice in momentul declararii mai multor
obiecte din aceeasi clasa?
R: Se aloca memorie distinct, pentru fiecare instanta
(atribute ale instantei) a clasei.
18. Deosebiri intre structuri si clase.
R: Modul de acces la membri: la structuri membrii sunt
implicit publici iar la clase implicit privati (membrii sunt
incapsulati).

19. Enumerati facilitatile oferite de programarea


orientata pe obiect.
R: abstractizarea datelor, mostenirea, incapsularea
informatiei, legarea dinamica.
20. Explicati conceptul de incapsulare a datelor.
R: Inchiderea tuturor partilor unei abstractiuni in
interiorul unui container.
21. Prototipul constructor de copiere.
R: <cls> (const <cls> &);
22. Explicati in cateva cuvinte ce este mostenirea
multipla.
R: In situatia mostenirii multiple, o clasa are mai multe
superclase. astfel mostenirea clasei va fi
multipla(rezultand o structura de retea).
23. Explicati in cateva cuvinte ce este
mostenirea.
R: Mostenirea este o caracteristica a limbajelor de
programare orientate pe obiect, care permite refolosirea
codului si extindere functionalitatii claselor existente.
24. Niveluri de acces la membrii si metodele unei
clase.
R: private, protected, public, (friend).
25. Cum se declara functiile prietene?
R: class cls1{
int f1(int,char);
};

//.....
//f1-metoda a clasei cls1

26. Prin ce se caracterizeaza datele membre


statice?
R: un singur exemplar, comun, pentru toate instantele
clasei.
27. Prin ce se realizeaza comunicarea intre
obiectele unei clase?
R: Prin functiile membre (metodele)-accesate in mod
similar oricarei functii, cu deosebirea ca este necesara
specificarea obiectului caruia ii corespunde metoda.
28. O clasa poate avea mai multi destructori?
Daca da, in ce conditii?
R: NU.
29. Operatorul :: si rolul sau.Ce sunt functiile
prietene?
R: Operatorul :: este operatorul scop. Functiile prietene
sunt functii nemembre, cu acces la membrii privati ai
unei clase.
30. Ce este o metoda?
R: Metodele sunt functiile membre, functiile declarate
sau definite in cadrul clasei.
31. Nici fuctiile prietene, nici metodele statice ale
unei clase nu primesc ca argumenti implicit
pointerul this. Explicati care sunt, totusi,
diferentele dintre ele.
R:
32. Ce sunt clasele?

R: O clasa reprezinta un tip abstract de date, care


incapsuleaza atat elementele de date pentru care s-a
adoptat un annumit mod de reprezentare, cat si
operatiile asupra datelor.
33. Ce sunt constructorii impliciti?
R: constructorii pot avea parametri impliciti fiind numiti
constructori impliciti.

Cap.3: Supraincarcarea operatorilor

1. Cum se realizeaza conversia din clasa1 in


clasa2? Dati un exemplu.
R: Se realizeaza cu ajutorul unui constructor al clasei2,
care primeste ca parametri obiecte din clasa1(fractie>complex);
EX:
2. Prin ce modalitati se pot supraincarca
operatorii?
R: Prin functii prietene, functii membre, dar si prin
metode statice cand metoda standard este insuficienta.
3. Cum se realizeaza conversia din tip predefinit
in clasa? In ce situatii se realizeaza conversiile
implicite?
R: Se realizeaza atat implicit, cat si explicit, in cazul in
care pentru clasa respectiva exista un constructor cu
parametri impliciti, de tipul predefinit.

Conversie implicita: inaintea atribuirii se converteste


operandul drept la tipul operandului stang.
4. Ce restrictii impune mecanismul de
supraincarcare a operatorilor?
R: -Se pot supraincarca doar operatorii existenti; nu se
pot crea noi operatori.
-Nu se poate modifica aritatea operatorilor
limbajului.
-Nu se poate modifica precedenta si asociativitatea
operatorilor.
-Nu se pot fi supraincarcati operatorii: .(op. selector
al unui membru), .*(op. de deferentiere, sel indirecta a
unui membru), ::(op de rezolutie,scop) si ?:(op
conditional).
5. Cum se poate realiza conversia dintr-un tip
abstract (clasa) intr-un tip predefinit? Exemplu.
R: Se realizeaza printr-un operator special(cast) care
converteste obiectul din clasa la tipul predefinit.
EX:
6. Ce observatii puteti face in legatura cu aritatea
unui operator si modul de supraincarcare a
acestuia?
R:
7. In cazul supraincarcarii metodelor, cum se
poate realiza selectia unei metode?
R: Printr-o functie membra sau prietena a clasei.

Cap. 4: Crearea ierarhiilor de clase

1. Ce este o clasa derivata si ce caracteristici are?


R: Reprezinta o specializare a unei clase de baza.
Orice clasa derivata mosteneste datele membru si
metodele clasei de baza, deci acestea nu trebuie
redeclarate in clasa derivata.
2. Functiile prietene pot fi functii virtuale?
R: Nu pot fi functii prietene dar nici constructori.
3. Destructorii se mostenesc?
R: Nu.
4. Ce este o clasa virtual si in ce situatii este
utila?
R:
5. Ce este o metoda virtual pura si cum se
declara aceasta?
R: Metodele virtual pure sunt metode care se declara,
nu de defines la acest nivel de abstractizare.
Virtual <tip_ret><nume_functie>(<lista_decl_pf>)=0;
6. Explicati ce inseamna legarea initiala (early
binding).

R: Informatiile necesare selectarii metodei sunt


prezentate din timp si pot fi utilizate din faza de
compilare.
7. Modul de declarare a unei clase derivate, cu
mai multe superclase.
R: La modul general, la declararea unei clase derivate,
se specifica o lista a claselor de baza, precedate de
modificatorul de acces care precizeaza tipul mostenirii.
Class<nume_cls_deriv>:<modificator_de_acces>
<nume_clasa_de_baza>
{ //corpul clasei derivate- elemente specific clasei
derivate
};
8. Ce este o metoda virtual?
R: Metoda virtual reprezinta o rezolvare a identificarii
metodei in momentul executiei programului.
9. Functiile virtuale pot fi membrii statici ai clasei
din care fac parte?
R: Nu.
10. Redefinirea unei functii virtuale intr-o clasa
derivate este similara cu supraincarcarea functiei
respective? Argumentati raspunsul.
R: Nu, deoarece prototipul unei metode virtual
rededinite trebuie sa coincide cu cel specificat in clasa
de baza.
11. Destructorii pot fi metode virtuale?

R: Da.
12. Constructorii pot fi metode virtuale?
R: Nu.
13. Care este utilitatea mostenirii?
R: Prin mostenire, un obiect poate prelua proprietatile
obiectelor din clasa de baza.
14. Explicati ce inseamna legarea ulterioara (late
binding).
R: - Identificarea unei metode supradefinite, in
momentul executiei, se numeste legare ulterioara.

S-ar putea să vă placă și