intrebari colocviu poo Flashcards

1
Q

Care dintre urmatoarele variante este cea mai potrivita pentru declararea unui pointer?
A. int x;
B. int &x;
C. ptr x;
D. int *x;

A

int *x;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Care dintre urmatoarele variante aloca o adresa de memorie variabilei de tip intreg a?
A. *a;
B. a;
C. &a;
D. adress(a);

A

&a;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Care dintre urmatoarele variante aloca o adresa de memorie pointerului a ?
A. a;
B. *a;
C. &a;
D. adress(a);

A

a;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Care dintre urmatoarele variante arata valoarea alocata pointerului a?
A. a;
B. val(a);
C. *a;
D. &a;

A

*a;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Care dintre urmatoarele variante este corecta pentru a aloca memorie in C?
A. new
B. malloc
C. create
D. value

A

malloc

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Care dintre urmatoarele variante este corecta pentru a dealoca memorie in c?
A. free
B. delete
C. clear
D. remove

A

free

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Care dintre urmatoarele variante nu este un prototip corect ?
A. int funct(char x, char y);
B. double funct(char x)
C. void funct();
D. char x();

A

double funct(char x)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Ce tip de functie va fi returnata folosind prototipul “int func(char x, float v, double t);”
A. char
B. int
C. float
D. double

A

int

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Care dintre urmatoarele variante este adevarata pentru apelarea unei unei functii (presupunand ca functie exista)?
A. funct;
B. funct x, y;
C. funct();
D. int funct();

A

funct()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Care dintre urmatoarele variante este o functie completa?
A. int funct();
B. int funct(int x) {return x=x+1;}
C. void funct(int) {printf(„Salut!”)};
D. void funct(x) {printf(„bauuuu !”);}

A

void funct(int) {printf(“Salut!”)};

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Ce tip de date returneaza constructorului unei clase?
- void;
- pointer cãtre void;
- un tip de date specificat de programator;
- nu returneazã nici un tip.

A

nu returneaza niciun tip

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

se considera urmatoarele declaratii:
class B{
int i;
};
class D : public B {….}
Care este tipul de acces la membrul i al clasei B pentru membri publici ai clasei D?
- public;
- protected
- inacccesibil;
- private.

A

innaccesibil
Deoarece baza b are date private iar d are date publice

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Care dintre propietatile alaturate apartin functiilor friend ale unei clase?
- funcţiile friend se moştenesc prin derivare;
- funcţiile friend au acces doar la membrii public ai clasei;
- funcţiile friend au acces doar la membrii statici ai clasei;
- funcţiile friend au acces la toţi membrii clasei.

A

functiile friend au acces la toti membrii clasei

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

ce este o data membru statistica?
- o datã membru staticã este unicã pentru toate instanţele clasei;
- o datã membru staticã este alocatã pe stivã;
- o datã membru staticã este implicit publicã pentru toate instanţele clasei;
- o datã membru staticã poate fi accesatã numai de funcţiile membru publice

A

o data membru statistica este unica pentru toate instantele clasei

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

de ce tip este parametrul formal al functiei f prototip:
void f(const int&a);
- prototipul este greşit;
- de tip referinta cãtre int, data de intrare;
- de tip referinta cãtre int, data de tip intrare / iesire;
- de tip int constant, ce nu poate fi modificat în functie

A

de tip referinta catre int, data de intrare
nu poate fi modificata (read-only)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

care este semnificatia instructiunii:
delete []p?
- este greşitã;
- şterge memoria alocatã programului;
- elibereazã zona de memorie alocatã stivei;
- elibereazã zona de memorie alocatã tabloului p

A

elibereaza zona de memorie alocata tabloului p

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

ce desemneaza in c++ cuvantul rezervat this?
- o referinţã cãtre obiectul curent cu care opereazã o funcţie membru;
- un pointer cãtre obiectul curent cu care opereazã o funcţie membru;
- un pointer la constructorul implicit;
- nu existã

A

un pointer catre obiectul curent cu care opereaza o functie membru

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

fie codul de mai jos:
inline int square (int &m)
{
return (mm);
}
inline double square (double &m)
{
return (m
m);
}
Care din afirmaţiile de mai jos e cea corectã:
- codul este greşit;
- este incorect folosit inline;
- codul este greşit, dublã definiţie pentru square;
-codul este corect, funcţia square este supraîncarcatã;
- codul este corect, funcţia square este virtualã.

A

codul este corect , functia square este supraincarcata
parametrii au tipuri diferite: int si double

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

se considera declaraatiile :
int i, &r_i=i;
alegeti varianta corecta de raspuns:
se defineşte r_i ca fiind un pointer cãtre i;
- se defineşte r_i ca referinţã cãtre int şi este un alias pentru i;
- se defineşte adresa variabilei r_i ca fiind egalã cu i;
- codul este greşit.

A

se defineste r_i ca fiind referinta catre int si este un alias pentru i

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

. Fie codul de mai jos
# include <iostream>
class Clasa{
int a,b;
public:
Clasa (int i=0, int j=0) {a=i;b=j;};
};
int main (void ){
Clasa obiect ;
cout << obiect.a<<" " <<obiect.b;
return 0;
}
Care din afirmatiile de mai jos e cea corectã:
- codul este greşit pentru cã nu se defineşte constructorul implicit;
- codul este greşit pentru cã nu se pot afişa componentele a, b;
- codul este greşit deoarece nu se specificã accesul la datele membre a, b;
- codul este corect.</iostream>

A

codul este gresit pentru ca nu se pot afisa componentele a si b, trebuie supraincarcat operatorul«

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Fie codul:
class untip {
private:
int a[3];
public:
int operator [] (int i) {return a[i]};
};
Alegeţi varianta corectã de rãspuns:
- codul este greşit deoarece nu se poate supradefini operatorul [];
- codul este sintactic corect, dar o componentã a vectorului nu poate apare in stinga unei
relatii de atribuire;
- codul este sintactic corect şi o componentã a vectorului poate apare in stinga unei relatii de atribuire;
- codul este greşit deoarece nu s-a scris corect supradefinitia operatorului [].

A

codul este sintactic corect , dar o componenta a vectorului nu apare in stanga unei relatii de atribuire

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

care este semnificatia instructiunii:
virtual void f(int a)=0;
- funcţia se initializeaza cu 0;
- instrucţiunea este greşitã;
- instrucţiunea declarã o funcţie pur virtuala;
- instructiunea specificã valoarea implicitã 0 pentru parametrul funcţiei

A

instructiunea declara o functie pur virtuala

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

. Fie clasa:
class A {
public:
int x; float y;
A(int n, float f){x=n; y=f;}
}
Fie codul:
A a;
Care din urmatoarele afirmatii despre codul de mai sus e adevarata?
- se apeleaza constructorul implicit al clasei A;
- codul nu se compileaza;
- datele x si y ale obiectului a se intializeaza cu 0;
- datorita faptului ca nu exista destructor declarat explicit, dupa executie, sistemul de operare semnaleaza eroare
la dealocare

A

codul nu se compileaza , clasa nu are constructor implicit

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Fie clasa:
class A {
int x;
A( int n=2 ) { x=n;}
};
Fie codul:
A a(0);
Efectul codului este:
- se construieste obiectul a si se intializeaza x cu 2;
- nu se poate construi obiectul a deoarece constructorul implicit nu e accesibil;
- se construieste obiectul a si se initializeaza x cu 0;
- nu s-a apelat corect constructorul si prin urmare obiectul nu se va construi.

A

nu se poate construi obiectul deoarece constructorul implicit nu este accesibil
este privat

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Fie clasa Complex declarata mai jos: class Complex{ int x, y; public: //aici se introduce prototipul operatorului de // insertie Complex(int n=0, int m=0); }; Supraincarcarea operatorului de insertie (iesire) se face in felul urmator: - friend ostream operator << (ostream &, complex &); - friend istream operator << (istream &, complex &); - friend ostream & operator << (ostream &, complex &); - friend ostream & operator >> (ostream &, complex &);
friend ostream &operator<<(ostream &, complex &);
26
ce este un polimorfism? - asocierea la "legare tirzie" a obiectului cu tipul potrivit de date; - asocierea obiectului cu metoda potrivita; - proprietatea codului de a avea mai multe forme; - proprietatea datelelor de a se schimba la executie.
asociere la "legarea tarzie "a obiectului cu tipul potrivit de date
27
Fie codul: class A{ // declaratii }; ……. A a, b(2), c(3,2); cout << c= =(a+b) << endl; ……. Pentru executia corecta a codului de mai sus este necesara implementarea operatorilor - <<, a operatorului de atribuire, a operatorului de adunare, a operatorului (); - <<, a operatorului de relatie (==), a operatorului de adunare (+); - <<, a operatorului de comparatie (relatie), a operatorului de adunare, a operatorului (); - <<, a operatorului de atribuire, a operatorului de adunare;
<< a operatorului de relatie (==), a operatorului de adunare(+);
28
care dintre afirmatiile de mai jos sunt corecte? - Daca exista o functie virtuala pura intr-o clasa, atunci clasa din care face parte devine abstractã; - Functiile prieten se suprascriu la derivare; - Membrii statici nu se mostenesc; - Metodele constante au acces la pointerul this.
1. daca exista o functie virtuala pura intr-o clasa , atunci clasa din care face parte devine abstracta 4. metodele constante au acces la pointerul this
29
. Fie codul #include #include class L { int *pT; public: int& operator[](int index){ return pT[index];} void constr_lin(int c){ pT=new int[c];} }; class M { L *pM; int Nl, Nc; public: L& operator[](int index) { return pM[index];} int get_Nl(void){ return Nl;} int get_Nc(void){ return Nc;} M(int,int); }; M::M (int nrLin, int nrCol){ Nl=nrLin;Nc=nrCol; pM=new L[Nl]; for(int i=0; i< Nl; i++) pM[i].constr_lin(Nc); } void functie(int NrL, int NrC) { M m(NrL, NrC); for(int i=0,j; i
corect sintactic dar lasa memorie alocata(orfana)
30
Fie declaratiile: const int ci=10; int *const cp=&ci; care dintre urmatoarele operatii este permisa? - ci=1; - cp=&ci; - *cp=ci ; - cp=ci ;
*cp=ci;
31
Fie functia care interschimbã valorile a douã variabile, definitã ca mai jos : void sw(int *p,int *q) { int t=*p; *p=*q ; *q=t ; } Fie codul : void f(int i,int j) { //aici se introduce apelul functiei sw …. } Apelul functiei sw se face in felul urmator: - sw(i,j); - sw(*i,*j); - sw(&i,&j); - sw(p,q);
sw(&i,&j):
32
. Fie codul: #include int a=1; void f() { int b=1; static int c=a; cout<<"a="<
afirmatia este corecta
43
Fie declaraţia : class Cstring { char *pv ; int dim ; public : Cstring (int sz) {pv=new char[dim=sz] ;} ~Cstring(){ delete [] pv ;} } ; şi funcţia f declaratã astfel : void f(void) { Cstring S1(10) ; Cstring S2(S1) ; ………….. } Care din afirmaţiile de mai jos este corectã : -Ambele declaraţii sunt incorecte sintactic; -Declaraţia pentru S2 este incorectã deoarece nu se genereazã automat constructor de copiere ; -Declaraţia pentru S2 nu este corectã deoarece în acest caz este necesarã definiţia unui constructor de copiere. -Ambele declaraţii sunt corecte sintactic şi nu creazã probleme la execuţie
-Declaraţia pentru S2 nu este corectã deoarece în acest caz este necesarã definiţia unui constructor de copiere.
44
Fie codul de mai jos: int sqrt (int &m) { return (m*m); } double sqrt (int &m) { return (m*m); } Care din afirmaţiile de mai jos e cea corectã: - codul este greşit; este incorectã supraîncãrcarea funcţiei sqrt ; - codul este greşit sqrt este cuvânt rezervat (cheie); - codul este corect, funcţia sqrt este supraîncãrcatã; - codul este corect, funcţia sqrt este virtualã."
- codul este greşit; este incorectã supraîncãrcarea funcţiei sqrt ; : ar trebui sa difere tipul param sau nr param
45
. Ce tip de date returneazã un destructor al unei clase? -void ; -pointer cãtre void ; -un tip de date specificat de programator;- -nu returneazã nici un tip
-nu returneazã nici un tip.
46
Care este semnificaţia instrucţiunii: virtual void f (int a ) = 0 ; funcţia se iniţializeazã cu 0; -instrucţiunea este greşitã; -instrucţiunea declarã o funcţie pur virtualã; -instrucţiunea specificã valoarea implicitã 0 pentru parametrul funcţiei pur virtuala.
-instrucţiunea specificã valoarea implicitã 0 pentru parametrul funcţiei pur virtuala. virtual tip nume fct (lista parametric ) =0 – declararea fct pur virtuala
47
. Analizaţi afirmaţia de mai jos : " Accesul la membrii privaţi sau protejaţi ai unui obiect instanţiat dintr-o clasã se poate face prin intermediul metodelor publice ale clasei cãreia îi aparţine. " -Afirmaţia este corectã ; -Afirmaţia este corectã în ceea ce priveşte doar membrii privaţi ; -Afirmaţia este corectã în ceea ce priveşte doar membrii protejaţi ; -Afirmaţia este complet eronatã.
-Afirmaţia este corectã ;
48
Fie codul : #include class baza { public : baza(){cout<< "Constr. baza\n ";} ~baza(){cout<< "Distr. baza\n ";} }; class deriv :public baza { public : deriv(){cout<< "Constr. deriv ";} ~deriv(){cout<< "Distr. deriv ";} }; int main(void) { deriv obj; return 0; } Ce mesaje se afişeazã la execuţia programului : -Constr. deriv Constr. baza Distr. deriv Distr. Baza -Constr. baza Constr. deriv Distr. deriv Distr. Baza -Constr. baza Constr. deriv Distr. baza Distr. Derive -Constr. baza Distr. baza Constr. deriv Distr. Derive
-Constr. baza Constr. deriv Distr. deriv Distr. Baza
49
Care din proprietãţile de mai jos NU aparţin funcţiilor friend ale unei clase: funcţiile friend nu se moştenesc prin derivare; -funcţiile friend au acces la toţi membrii clasei -funcţiile friend pot fi metode (funcţii membru) ale unei alte clase ; -funcţiile friend au acces la pointerul this.
funcţiile friend au acces la pointerul this
50
. #include #include class Baza{ protected: int Param; public: Baza():Param(0) { cout<<"Constructor implicit Baza!"<> (istream &In, Deriv1 &Obj) {cout<<"Valoare pentru Param din clasa Deriv1: ";In>>Obj.Param; return In;}; void Identificare() {cout<<"Clasa Deriv1!"<> (istream &In, Deriv2 &Obj) {cout<<"Valoare pentru Param din clasa Deriv2: ";In>>Obj.Param; return In;}; void Identificare() {cout<<"Clasa Deriv2!"<>Obj1>>Obj2; Deriv1 Obj3(Obj1); Baza Sir[3] = {Obj1, Obj2, Obj3}; for (int contor=0;contor<3;contor++) Sir[contor].Identificare(); return 0; } Datã fiind construcţia de mai sus, care dintre urmãtoarele afirmaţii este adevãratã: -Programul dã eroare la compilare deoarece nu este supradefinit operatorul =.' -Construcţia nu ilustreazã polimorfismul -Rezultatul celor trei apelãri ale funcţiei Identificare este: Clasa Deriv1! Clasa Deriv2! Clasa Deriv1! -Nu pot exista obiecte de tipul Baza
Construcţia nu ilustreazã polimorfismul
51
. Fie o clasã cu numele Deriv ce se deriveazã public din clasa de bazã Baza, definitã astfel: class Baza { public: Baza(){}; virtual ~Baza() { }; virtual void Verificare(char[]) =0; }; În afarã de membrii proprii, clasa de bazã Baza mai are ca funcţie friend o funcţie numitã Calcul. Care dintre variantele de prototip al funcţiei Calcul este incorectã: -friend void Calcul(Baza&); -friend int Calcul(Baza, int); /* frined tip_returnat nume_fct frined ( lista param) */ -friend int Calcul(Baza&, int); -friend int Calcul(Baza*, int);)
-friend int Calcul(Baza, int); /*
52
Fie o clasã cu numele Deriv ce nu conţine nici un alt membru (exceptând constructori, destructor) în afara celor ce se moştenesc prin derivare public din clasa de bazã Baza, definitã astfel: class Baza { protected: int Param; public: Baza():Param(0) {}; virtual ~Baza() {}; }; Care dintre variantele de constructor al clasei derivate Deriv ar genera eroare la compilare: -Deriv(Deriv const & Obj):Param(Obj.Param) {}; -Deriv(Deriv const & Obj) {Param=Obj.Param;} -Deriv(Deriv const & Obj) {cout<<"Constructor implicit"<
Deriv(Deriv const & Obj):Param(Obj.Param) {}; Baza nu are cnstructor copiere explicit; param nu este membru static sau clasa de baza pentru Deriv.
53
Fie o clasã cu numele Clasa, de forma: class Clasa { int Valoare; public: Clasa(void):Valoare(0) {}; Clasa(Clasa const& Obj):Valoare(Obj.Valoare) {}; Clasa(int const x):Valoare(x) {}; ~Clasa() {}; }; În plus clasa Clasa mai poate supraîncãrca o serie de operatori. Care dintre variante este greşitã? -Clasa operator +(Clasa &Obj){ Clasa Rezultat; Rezultat.Valoare=Valoare+Obj.Valoare; return Rezultat; }; -Clasa operator +(Clasa &Obj) { Valoare+=Obj.Valoare; return *this; }; -friend Clasa operator +(Clasa &Obj1, Clasa &Obj2){ Clasa Rezultat; Rezultat=Obj1.Valoare+Obj2.Valoare; return Rezultat; }; -friend Clasa operator +(Clasa &Obj1, Clasa &Obj2) { Valoare=Obj1.Valoare+Obj2.Valoare; return *this; };
-friend Clasa operator +(Clasa &Obj1, Clasa &Obj2) { Valoare=Obj1.Valoare+Obj2.Valoare; return *this; };
54
. Fie o clasã cu numele Clasa, de forma: #include class Clasa { int Valoare; public: Clasa(void):Valoare(0) {cout<<"Constructor implicit, Clasa!"<
-CI=2, CC=1, CP=3, D=6
55
#include #include class L { int *pT; public: int& operator[](int index){ return pT[index];} void constr_lin(int c){ pT=new int[c];} }; class M { L *pM; int Nl, Nc; public: L& operator[](int index) { return pM[index];} int get_Nl(void){ return Nl;} int get_Nc(void){ return Nc;} M(int,int); }; M::M (int nrLin, int nrCol){ Nl=nrLin;Nc=nrCol;pM=new L[Nl]; for(int i=0; i< Nl; i++) pM[i].constr_lin(Nc); } void functie(int NrL, int NrC){ M m(NrL, NrC); for(int i=0,j; i
-0 1 2 10 11 12 20 21 22
56
Operatorul delete : -dezaloca memoria obtinuta la definirea unei variabile sau a unui obiect. -dezaloca memoria obtinuta atunci cand o variabila sau un obiect sunt create folosind operatorul new. -nu poate distruge un obiect. -trebuie folosit cu sintaxa delete[].
-dezaloca memoria obtinuta atunci cand o variabila sau un obiect sunt create folosind operatorul new.
57
Daca ati creat un obiect folosind instructiunea : p = new X; atunci pentru a accesa o functie membru f() pentru obiectul nou creat veti scrie : -X.f(); -X->f(); - p.f(); -p->f()
-p->f();
58
Pointerul this: -nu trebuie niciodata accesat direct de programator. -trebuie initializat de programator. -este diferit in diferite versiuni ale aceleiasi functii membru care este invocata de obiecte diferite. -este diferit in diferite functii membru apelate de acelasi obiect
-este diferit in diferite versiuni ale aceleiasi functii membru care este invocata de obiecte diferite.
59
Daca se atribuie adresa unui obiect dintr-o clasa derivata unei variabile ce este pointer la clasa de baza, atunci cand se acceseaza obiectul folosind acest pointer a. aceste continua sa se comporte ca un obiect din clasa derivata b. acesta se comporta ca un obiect din clasa de baza c. se va genera un mesaj de eroare d. aceste continua sa se comporte ca un obiect din clasa derivata daca se apeleaza functii virtuale
d. aceste continua sa se comporte ca un obiect din clasa derivata daca se apeleaza functii virtuale
60
Daca destructorul clasei de baza nu este virtual atunci: -el nu poate fi apelat -el nu poate fi apelat atunci cand obiectul este accesat prin intermediul ointerilor -destructorii claselor derivate nu pot fi apelati -destructorii claselor derivate nu pot fi apelati atunci cand obiectul este accesat printr-un pointer la clasa de baza
-destructorii claselor derivate nu pot fi apelati atunci cand obiectul este accesat printr-un pointer la clasa de baza
61
. Operatia de legatura ulterioara "late binding" pentru metode virtuale : -priveste legatura dintre un obiect din clasa derivata si clasa de baza din care a fost derivate -se bazeaza pe proprietatea unui obiect de a-si cunoaste propriile functii membru -are loc in faza de compilare -are loc in faza de editare de legaturi (link)
-se bazeaza pe proprietatea unui obiect de a-si cunoaste propriile functii membru
62
Cand returnati *this dintr-o functie, -tipul valorii returnate de functie trebuie sa fie aceeasi clasa ca si obiectul care a invocat functia -tipul valorii returnate de functie trebuie sa fie pointer catre aceeasi clasa ca si obiectul care a invocat functia -nu se poate folosi apelul prin valoare+obiectul care a apelat functia - este distrus
-tipul valorii returnate de functie trebuie sa fie aceeasi clasa ca si obiectul care a invocat functia
63
Daca o functie este declarata : void f(const int* arg1); -compilatorul va semnala o eroare -ea nu poate schimba valoarea lui arg1 -ea nu poate modifica valoarea variabilei a carei adresa este in arg1 -ea nu poate avea acces la continutul lui arg1
-ea nu poate modifica valoarea variabilei a carei adresa este in arg1
64
Argumentul unui constructor de copiere trebuie transmis prin referinta deoarece, in caz contrar: -nu va exista return din constructorul de copiere -integritatea obiectului argument nu poate fi garantata -integritatea obiectului creat nu poate fi garantata -constructorul de copiere nu poate fi identificat de catre compilator.
-nu va exista return din constructorul de copiere
65
. Care dintre declaratiile de mai jos sunt valide pentru functii ce utilizeaza valori implicite pentru argumente? -void afunc(char='x', float, int); -void afunc(char ch, float fpn, int intvar=77); -void afunc(char ch=3.14159, float fpn=3.14159, int intvar); -void afunc(char, float, int);
-void afunc(char ch, float fpn, int intvar=77);
66
Ori de cate ori se supraincarca operatorul += pentru o clasa, acest operator va avea abilitatea de a : a. aduna un obiect la obiectul pentru care operatorul a fost apelat b. aduna argumentul operatorului += la el insusi. c. aduna doua obiecte fara a le modifica d. nu returna rezultatul unei adunari
aduna un obiect la obiectul pentru care operatorul a fost apelat
67
. In mostenirea public, de exemplu din main(), un obiect al clasei derivate -poate apela o functie membru publica din clasa de baza - poate apela o functie membru protected din clasa de baza -poate apela o functie membru protected din clasa derivate - nu poate apela nici o functie membru din clasa de baza
-poate apela o functie membru publica din clasa de baza
68
Fie urmãtoarele propoziţii: (1) Din metode statice se pot apela metode ne-statice. (2) Din metode ne-statice se pot apela metode statice. (3) Din metode statice se pot modifica membri statici. (4) Din metode statice se pot modifica membri ne-statici. (5) Din metode ne-statice se pot modifica membri statici. Considerând notaţiile F=fals, A=adevãrat, sã se precizeze care dintre urmãtoarele variante este adevãratã: -(1)A (2)A (3)A (4)A (5)A -(1) F (2)A (3)A (4)F (5)A -(1)F (2)A (3)F (4)F (5)A -(1)F (2)F (3)A (4)A (5)A
-(1) F (2)A (3)A (4)F (5)A
69
Alegeţi rezultatul execuţiei codului urmãtor: #include class B{ public: virtual void m1( ){ cout<<"B::m1 "; } void m2( ){ cout<<"B::m2 "; } }; class D:public B{ public: void m1( ){ cout<<"D::m1 ";} void m2( ){ cout<<"D::m2 "; } }; void main() { D d1; B *p=&d1; d1.m1( ); d1.m2( ); p->m1( ); p->m2( ); } -D::m1 D::m2 D::m1 D::m2 -D::m1 B::m2 D::m1 B::m2 -D::m1 D::m2 D::m1 B::m2 -B::m1 B::m2 B::m1 B::m2;
-D::m1 D::m2 D::m1 B::m2
70
Ce se va afişa în urma execuţiei programului: #include void func(char *a, int b=3, char *c="Salut! ") { cout<
-Mihai spune Salut! Salut! Salut! Elena spune Salut! Salut! Alice spune Buna! Buna! Buna! Buna!
71
Se considerã programul: #include class Baza { private: int x; public: void setx(int n) { x=n; } void afisx( ) { cout << x; } }; class Deriv : public Baza{ int y; public: void sety(int n) { y=n; } void afisy( ) {cout << y; } }; int main(void ) { Deriv Obj; Obj.setx(10); Obj.sety(20); Obj.x=15; Obj.afisx( ); Obj.afisy( ); return 0 } Programul de mai sus are o eroare la compilare. Din cauza cãrui fapt apare eroarea? -din cauza apelului Obj.setx(10); -din cauza apelului Obj.afisx( ); -din cauza instrucţiunii Obj.x=15; -din cauza faptului ca nu i s-a atribuit valoare variabilei y
din cauza instrucţiunii Obj.x=15;
72
2.Se dã codul: #include class Clasa{ private: int n; public: Clasa( ){ n=0;} void inc( ){ n++; } friend Clasa&operator=(Clasa& dest, const Clasa& sursa); }; Clasa& operator=(Clasa& dest,const Clasa& sursa) { dest.n=sursa.n; return dest; } void main() { Clasa A,B; for(int i=0;i<5;i++,B=A) { A.inc( ); } } Care afirmaţie de mai jos este adevãratã: -Operatorul de atribuire nu poate fi supraîncãrcat ca funcţie friend. -Nu este corectã atribuirea B=A deoarece nu existã constructor de copiere. -Variabila n nu poate fi incrementatã în interiorul funcţiei inc( ), deoarece n este declarat private. -Programul este corect, iar în urma execuţiei variabila n va avea valoarea 4.
Operatorul de atribuire nu poate fi supraîncãrcat ca funcţie friend.
73
Care este ordinea de apel a destructorilor dacã se executã codul urmãtor? class A {...}; class B {...}; class C {...}; class D: public A{...}; class E : public A, public B {C c;...}; class F : public E {...}; void main() { F f;} -F C B E A -F E C B A -E F A D B - A B C F E?
-F E C B A
74
Dacã declaraţia unei clase începe astfel: class A : public B { atunci care dintre afirmaţii este adevãratã: -Membrii publici ai clasei B devin membri publici ai clasei A -Membrii publici ai clasei B devin membri privaţi ai clasei A -Membrii publici ai clasei A devin membri publici ai clasei B -Membrii publici ai clasei A devin membri privaţi ai clasei B
Membrii publici ai clasei B devin membri publici ai clasei A
75
Daca exista un vector A de pointeri la obiecte, atunci, pentru a apela o functie membru f() pentru cel de al patrulea obiect din vector veti scrie : -A.f(3) -A->f(3) -A[3].f() -A[3]->f()
-A[3]->f()
76
Care este rezultatul executiei codului de mai jos: int a=9;b=4; float c=a/b; cout< c=2.5
-2
77
. Ce efect are codul de mai jos: int a=5, b=7,c; c=a+++b; -a=5 b=7 c=12; -a=6 b=7 c=12; -a=6 b=7 c=13; -eroare de compilare
-a=6 b=7 c=12; A: visual vede a++ + b , iar in adunare a este 5 apoi se face incrementarea
78
Care este rezultatul executiei codului de mai jos: for(;;); { static int i=6; i++; } -da eroare de compilare; -nimic; -bucleaza la infinit -i=7D
daca avem ; dupa for nu afiseaza nimic, daca stergem ; e bucla infinita -nimic;
79
. Este corect codul de mai jos? const int i=9; int& r=i; -dependent de compilator; -Da; -Nu.
-Nu. A: Deoarece converteste int la int&
80
. Care este rezultatul executiei codului de mai jos: int i=3; int &j=i; j++; i=7; j--; -eroare de compilare; -i=7 j=6; -i=6 j=6.
-i=6 j=6. A: j ia valoarea lui i, adica 3 se incrementeaza, j se incrementeaza, rezulta ca i=7, deci j ia valoarea 7, se decrementeaza j=7 si i=6; j este adresa pentru i.
81
. Care este rezultatul executiei codului de mai jos: int *p, *q; *p=9; q=p; delete q; *p=7; cout<<*p; -posibila eroare de executie; -eroare de compilare -7 -0
posibila eroare de executie; A: se inchide consola
82
Care din variantele de mai jos aloca memorie corespunzator (corect) char *a=new char(20) char a=new char(20) char *a=new char[20] depinde de compilator char *a=new char(20) /* trebuie sa avem valoare */ char a=new char(20) char *a=new char[20] /* pt dimensiunea vectorului */ depinde de compilator
char *a=new char(20) /* trebuie sa avem valoare */ char *a=new char[20] /* pt dimensiunea vectorului */
83
Adevarat sau fals : Daca se incrementeaza suficient de mult o variabila de tip long ea devine negativa. -Adevarat; -Fals; -Va rezulta eroare de sintaxa; -Depinde de compilator
-Adevarat;
84
. Ce caracter termina orice sir de caractere? - '0' - '\0' - . (punct) - nici unul de mai sus.
- '\0'
85
Care este sintaxa corecta pentru derivarea unei clase Clasa din clasa Super? class Clasa:: public Super class Clasa inherit Super class Clasa: public Super class Clasa(public Super) class Clasa:: public Super class Clasa inherit Super class Clasa: public Super /* class D: [conf_acces] B()[modificare] B */ class Clasa(public Super)
class Clasa: public Super /* class D: [conf_acces] B()[modificare] B */
86
Care este rezultatul executiei codului de mai jos: static int j; void main(void) { for (int i=10;i>0;i--) j+=i; cout<
-Apare eroare de compilare. Da eroare de compilare deoarece compilatorul doreste int, daca era int atunci raspunsul era 55.
87
Cum se defineste corect (pentru orice pereche de parametri) un macro pentru calcului maximului? #define MAX(a,b) a>b?a:b #define MAX(a,b) (a)>(b)?(a:b) inline int max(int a, int b) {return a>b?a:b} -#define MAX(a,b) a>b?a:b -#define MAX(a,b) (a)>(b)?(a:b) -inline int max(int a, int b) {return a>b?a:b} -Nici una de mai susN222222
-#define MAX(a,b) (a)>(b)?(a:b)
88
Care este diferenta dintre 1. #include 2. #include "clasa.h" -In varianta 1 se cauta fisierul in toate directoarele, iar in varianta 2 compilatorul cauta fisierul din directorul current; -In varianta 2 se cauta fisierul in toate directoarele, iar in varianta 1 compilatorul cauta fisierul din directorul current; -Nu e nici o diferenta -Depinde de compilator -Nici unul din raspunsurile de mai sus nu este correct
-Nici unul din raspunsurile de mai sus nu este correct A: pentru <>- fisierul e corelat in directoarele standard, pentru “” fisierul ecorelat in directorul curent , apoi in directorul standard
89
. Cum se dezaloca memoria alocata cu : char * a= new char[20]; -delete a; -delete *a;a=NULL; -delete []a, a= NULL; -free(a);232323
-delete []a, a= NULL;
90
In cazul in care ptr este un pointer catre o clasa iar mem_fun este o metoda a clasei codul ptr- >mem_fun(x) este echivalent cu : - (*ptr).mem_fun(x); - *ptr.mem_fun(x); - *(ptr->mem_fun(x)); - Nici una din variantele de mai sus nu e corecta.
- (*ptr).mem_fun(x);
91
. Care este modul de acces implicit la datele membru ale unei clase? -Public; -Protected; -Private; -nu se defineste.
-Private; A: poate specifica proprie conceptului - > asigura implementarea clasei
92
Care este rezultatul executiei codului de mai jos pentru valoarea cod=25 : value=5; switch(cod) { case 1: value=10; case 2: value=25; case 3: value=30; } -este gresit pentru ca nu are clauza default; -Codul nu se compileaza; -value =10 value =30; -value =5./* nu avem nici un case 25, deci ramane valuarea initiala */
-value =5./* nu avem nici un case 25, deci ramane valuarea initiala */
93
Comentati codul de mai jos: class MyClass{ .......... public: MyClass(const char *s=NULL, int h=0); } -Codul este gresit pentru ca nu se precizaza tip de return pentru constructor; -Codul este gresit pentru ca nu se implementeaza constructor implicit; -Codul este gresit pentru ca nu se implementeaza constructor de copier; -Codul este corect : se implementeaza 3 variante de constructori -Codul este corect : se implementeaza 4 variante de constructori
-Codul este corect : se implementeaza 3 variante de constructori
94
Comentati codul de mai jos: class MyClass{ int l; public: MyClass(int j) {l=j;} MyClass(MyClass c) {l=c.l;} }; void main(void) { MyClass original(1); MyClass x=original; } -Codul este gresit, da eroare de compilare; /* constructor de copiere*/ -Codul este gresit, nu are definit operator de atribuire; -Codul este gresit pentru ca nu se implementeaza constructor implicit; -Codul este correct
Codul este gresit, da eroare de compilare; /* constructor de copiere*/
95
. Ce se apeleaza la executia instructiunii marcata cu * din codul de mai jos (a doua din functia main): class MyClass{ int l; public: MyClass(int j) {l=j;} MyClass(MyClass& c) {l=c.l;} }; void main(void) { MyClass original(1); MyClass x=original; // * } -Codul este gresit, da eroare de compilare; -Codul este gresit, nu are definit operator de atribuire; -Metoda ce supraincarca implicit operatorul de atribuire; -Constructorul de copiere; -Codul este gresit pentru ca nu se implementeaza constructor implicit.242424
-Codul este gresit, da eroare de compilare;
96
Care este rezultatul executiei codului de mai jos pentru valoarea cod=2 : value=5; switch(cod) { case 1: value=10;break; case 2: value=25; case 3: value=30; } -codul nu se compileaza; -codul este gresit pentru ca nu are clauza default; -value =25; -value =30; /* daca aveam break la case 2 aveam 25 “sare” din switch */ -value =5.
-value =30; /* daca aveam break la case 2 aveam 25 “sare” din switch */
97
Membrii protected ai unei clase pot fi accesati de: a. Membrii claselor derivate b. Orice functie static c. Functii prieten(friend) ale clasei d. Membrii private ai aceleasi clase
c. Functii prieten(friend) ale clasei Argumentare: protected – similar cu private, dar accesul se extinde pentru functiile membre şi prietene ale claselor derivate din clasa respectivă (clasele derivate vor fi tratate ulterior)
98
O clasa de baza abstracta este o clasa care: a. Trebuie folosita in vederea derivarii altor clase b. Contine numai metode virtuale c. Contine numai metode private d. Nu poate fi folosita pentru a deriva alte clase
a. Trebuie folosita in vederea derivarii altor clase A: O clasa de bază este o clasă generală şi esenţa derivării este refolosirea unui comportament definit anterior într-o clasă de bază
99
In declaratia const char *p a. Pointerul si data pot fi modificate b. Pointerul este constant, data poate fi modificata c. Pointerul poate fi modificat, data nu poate fi modificata d. Nici data, nici pointerul nu pot fi modificate
c. Pointerul poate fi modificat, data nu poate fi modificata A: Aceasta este o forma de pointer la un caracter constant. Nu se poate schimba valoarea la care pointeaza pointerul dar se poate schimba pointerul.
100
Cum se supraincarca in mod correct operatorul de decrementare in notatie prefixata pentru calasa A? a. A& operator- -() b. A operator(int)- -; c. Const A& operator(int)- - d. A operator- -();
a. A& operator- -() A: deoarece in varianta postfixata e A operator - - (int)
101
De ce este util sa se declare virtual destructorul clasei de baza? a. Pentru a asigura faptul ca obiectele claselor derivate sunt distruse in mod corespunzator b. Nu se poate declara virtual destructorul clasei de baza c. Pentru a distruge metodele virtuale in momentul in care acestea nu mai sunt necesare d. Este obligatoriu o astfel de declarative
a. Pentru a asigura faptul ca obiectele claselor derivate sunt distruse in mod corespunzator //d. Este obligatoriu o astfel de declaratie A rosu: Se apeleaza in mod correct destructorul clasei derivate corespunzatoare pointerului cu care a fost initializat pointerul la clasa de baza //A evidentiat: Se face o astfel de declarative deoarce polimorfisumul functioneaza numai in situatiile in care se folosesc pointeri la clasa de baza pentru a se face apel la o metoda vrituala. Clasele care folosesc astfel de pointeri trebuie obligatoriu sa contina destructorul virtual.
102
Se da declaratia: class Person { public: doSomething(); .... }; class SpecialPerson: public Person{...}; Presupunand ca aSpecialPerson este o instantiere a clasei SpecialPerson, care dintre urmatoarele apeluri se se fac in exteriorul claselor?
aSpecialPerson.Person:: doSomething();
103
Se da declaratia: class A: public class B {…}; In ce ordine se apeleaza constructorii l declaratiea unui obiect din clasa A?
Constructorul clasei A primul, apoi cel al clasei B
104
Ce metoda nu va genera implicit compilatorul, daca programul omite definirea acestora?
R: Metoda ce supraincarca operatorul de egalitate (==)
105
Cum se declara o metoda ce poate opera inclusiv asupra obiectelor declarate constante?
const int myMethod (const int var); int myMethod(const int var);
106
Friend clasa operator + (clasa &e1, clasa&e2) { valoare=e1.valoare+ e2.valoare ; Return *this; }
Op. Supraincarcarea
107
Cum se numeste instructiunea care reda constrolul functiei apelante?
return
108
Ce instructiune implementeaza ciclul cu test final?
do-while
109
Fie codul: #include Class Parinte { Class Copil : public Parinte { Public: public: Parinte ( ) { Stare ( ) ; } Copil ( ) { Stare ( ) ; } Virtual ~Parinte ( ) { virtual void Stare ( ) { cout << “Copil” ; } Cout<< “Parinte”; } ; } int main (void) { } ; Copil c; return 0; } Care este efectul executiei codului de mai sus (ce mesaje se vor afisa) ? -Copil Copil; -Copil Parinte Parinte Copil; -Parinte Parinte; -Parinte Copil Copil Parinte
Parinte Copil Copil Parinte
110
Fie codul: #include Int main (void){ Int x = 1; For (int I =1; I <5; i++) { If(I == 3) Continue; Else if(I == 4) Break; X++; } Return 0; } Ce valoare are variabila x in urma executiei codului de mai sus? -1 -2 -3 -4
-3 (nu sunt sigura, dupa rulare a afisat si 2 si 3)
111
Care din urmatoarele afirmatii sunt adevarate? -Polimorfismul este acel concept din programarea orientata obiect care permite apelul metodei potrivite pentru obiectul potrivit; -La iesirea din domeniul de valabilitate (scope) al unui obiect, se apeleaza destructorul acestuia. -La eliberarea zonei de memorie (delete) alocata dinamic unui obiect cu new se apeleaza destructorul acestuia;
-La iesirea din domeniul de valabilitate (scope) al unui obiect, se apeleaza destructorul acestuia. A: Destructorul este apelat automat de către un program atunci când încetează existenţa unui obiect
112
Ce caracteristici pot diferi in cazul a doua functii supraincarcate? a. Numarul de parametrii b. Tipul parametrilor c. Tipul valorii returnate -a, b, sau c -(a si b) sau c -Numai a si b - (a si c) sau (b sau c)
-Numai a si b A: Raspunsul dat este datorita faptului ca fiecarei functii in C++ i se asociaza o semnatura compusa din numele functiei, numarul de parametrii, tipul parametrilor si ordinea acestora, conditia fiind ca aceasat sa fie diferita pentru fiecare functie.
113
Care dintre comportamentele uzuale ale operatorului de atribuire NU sunt implementate de metoda de supraincarcare a acestuia pentru clasa K de mai jos Void operator=(const K&); -prototipul este complet eronat; va rezulta eroare de compilare -nu se pot realiza atribuiri inlantuite; -nu se pot evalua corect expresii de forma K o1,o2; (o1=o2)++; -nu se poate realiza operatia de atribuire.
nu se poate realiza operatia de atribuire. (nu sunt sigura) A: Metoda ce supraîncarcă operatorul de atribuire trebuie sa returneze o referinţă către clasa căreia îi apartine.
114
Se da codul: Class X { Int a,b ; Public: X() : a(0), b(0) { a=b++; } X& operator++ (int) { a++; b++; Return *this; } X& operator++ () { a++; b+=2; Return *this; } }; Int main (void) { X x; x++; (++x)++; Return 0; } Care sunt valorile variabilelor x.a si x.b in urma executiei codului de mai sus? -x.a =3, x.b=6 -x.a=4, x.b=5 -x.a=3, x.b=5 -valorile variabilelor x.a si x.b sunt necunoscute, depind de system
valorile variabilelor x.a si x.b sunt necunoscute, depind de system (nu sunt sigura)
115
Fie codul: Class Baza { Public: Virtual void Functie( )=0 {n=1; } //functie pur virtuala Private: Int n; }; Class D1 : Baza { }; Class D2: public D1 { Int I; Void Functie( ) {i=2;} }; Int main() { D1 obj1; D2 obj2; Return 0; } Din ce motiv codul de mai sus este gresit? -clasa D1 trebuia sa defineasca functia Functie -clasa D2 nu poate defini functia Functie -clasa D1 nu are access la functia Functie -este o eroare de sintaxa in declaratia functiei Functie
-clasa D2 nu poate defini functia Functie A: Clasa D2 este derivata din clasa D1.
116
Fie codul: Class Base { Public: Base(); //constructor implicit al clasei de baza ~Base(); //destructor al clasei de baza Void showName() { Cout<< “Hi! I’m Base!\n”;} }; Class Derived : public Base { Public: Derived(); //costructorul implicit al clasei derivate ~Derived(); //destructorul clasei derivate Void showName() { Cout<< “Hi! I’m Derived!\n”; } }; Int main() { Base* pb = new Derived; pBase->ShowName(); return 0; } Ce este gresit in codul de mai sus, presupunand ca se doreste punerea in evidenta a conceptului de polimorfism? -trebuia ca functia Base::showName() sa fie virtuala; -nu este permis sa se atribuie unui pointer la clasa Base un pointer la Derived fara o conversie explicita; -nu este permisa supraincarcarea unei functii din clasa de baza daca acea clasa nu este abstracta; -trebuia ca functia Derived::showName() sa fie virtuala.
-trebuia ca functia Base::showName() sa fie virtuala; A: Conceptul de polimorfism functioneaza numai in situatiile in care se face apel la metode virtuale prin intermediul unor pointeri la clasele de baza. Caracterul virtual al unei metode se transmite si metodelor corespunzatoare din clasele derivate.
117
Care este valoarea corecta pe care o returneaza sistemul de operare la sfarsitl unei compilari reusita a programului ? A. -1 B. 1 C. 0 D. Nici o valoare nu este returnata
C. 0
118
Care este functia pe care majoritatea programelor C trebuie sa o contina? A. start() B. system() C. main() D. program()
C. main()
119
Ce semn de punctuatie este folosit pentru a marca inceputul si sfarsitul blocurilor de cod ? A. { si } B. -> si <- C. BEGIN si END D. ( si )
A. { si }
120
Ce semn de punctuatie este folosit la sfarsitul majoritatii liniilor de comanda in C ? A. . B. ; C. : D. `
B. ;
121
Care din urmatoarele variante este un coment corect ? A. */ Comments */ B. ** Comment ** C. / * Comment */ D. { Comment }
C. /* Comment */
122
Care din urmatoarele variante nu este un tip de variabila corecta ? A. float B. real C. int D. double
B. real
123
Care din urmatoarele variante este un operator pentru compararea a doua variabile ? A. := B. = C. equal D. ==
D. ==
124
Ce metode nu va genera implicit compilatorul daca programatorul omite definirea acestora?
Metoda de supraincarcare a operatorului egalitate (==)
125
Care dintre urmatoarele afirmatii depsre membrii statici ai unei clase este adevarata? - o fct membru statica poate accesa numai membrii statici ai unei clase - un membru static este partajat intre toate obiectele clasei - un membru static poate fi accesat direct din main
- o fct membru statica poate accesa numai membrii statici ai unei clase - un membru static este partajat intre toate obiectele clasei - un membru static poate fi accesat direct din main
126
!!!!!!!!Care dintre urmatoarele afirmatii este corecta? -Un pointer al clasei derivate nu poate indica catre o clasa de baza -Un pointer al clasei de baza nu poate indica catre o clasa derivata -Nu se poate crea un pointer la o clasa de baza -Nu se poate crea un pointer la o clasa derivata
-Un pointer al clasei derivate nu poate indica catre o clasa de baza -Nu se poate crea un pointer la o clasa de baza -Nu se poate crea un pointer la o clasa derivata
127
Care dintre urmatoarele afirmatii este corecta? - o functie friend poate accesa membrii privati ai clasei - o functie friend poate accesa membrii publici ai clasi -o functie friend poate accesa membrii protejati ai clasei
- o functie friend poate accesa membrii privati ai clasei - o functie friend poate accesa membrii publici ai clasi -o functie friend poate accesa membrii protejati ai clasei
128
Care este rezultatul executiei programului de mai jos? #include using namespace std; class a { public: int x; a(int i) { x = i;} int operator+ (a i) { return x + i.x; } operator int() {return 0; } }; int main() { a x(10); int b = (int)x + 5; cout << b; } -15 -0 -5 -10
5
129
Care este rezultatul executiei programului de mai jos? #include using namespace std; template void f(T& i) {std::cout << 1;} template <> void f(const int& i) {std::cout << 2;} int main(){ int i = 42; f(i); return 0; } -2 -0 -42 -1
1
130
Care este rezultatul executiei programului de mai jos? #include using namespace std; class a { public: int x; virtual int f() {return 1;} a() { x = 10 + f(); } }; class b { public: virtual int f() {return 2;} }; class c : public a, b { public: int x; virtual int f() {return 3;} c() {x - 10 + f();} }; int main() { c obj; cout << (&obj)->x << " "; cout << ((a*)&obj)->x; } -13 11 -10 11 -11 13 -11 10
13-11
131
Cate erori de compilar are programul de mai jos? #include using namespace std; class ant{ public: int x; ant(int i) {x = i;} ant operator +(const ant& i) {return ant(x + i.x);} ant operator ++(int) {return ant(x+1);} }; int main() { ant y = 10; int x = 10; x++ = 10; y++ = 10; x + 1 = 10; y + 1 = 10 return 0; }
2
132
Care este rezultatul executiei programului de mai jos? #include using namespace std; class Baza { public: void F_1() {cout << "Baza F-1\n";} virtual void F_2() {cout << "Baza F-2\n";} virtual void F_3() {cout << "Baza F-3\n";} virtual void F_4() {cout << "Baza F-4\n";} }; class Derivata: public Baza { public: void F_1() {cout << "Derivata F-1\n";} void F_2() {cout << "Derivata F-2\n";} void F_4(int x) {cout << "Derivata F-4\n";} }; int main() { Baza* P; Derviata D1; P = &D1; P->F_1(); P->F_2(); P->F_3(); P->F_4(); return 0; }
Baza F_1 Derivata F_2 Baza F_3 Baza F_4
133
Considerand codul de mai jos: #include using namespace std; class Base{ void setD(int a){ d = a; } protected: int d; Base(int a = 0){ d = a; } }; class Deriv : public Base { public: //default contructor }; Care dintre urmatoarele definitii ale constructorului clasei Deriv nu este corecta? -Deriv() {Base::d=4} -Deriv() {this->d=4} -Deriv(): Base(4) {} -Deriv() {} -Deriv() {setD(4);}
-Deriv(): Base(4) {} -Deriv() {setD(4);}
134
Pentru a distinge un operator de incrementare supraincarcat in varianta postfixata, avem nevoie de: -un parametru dummy -un comentariu special -cuvant cheie postfix -adaugat = 0 la sfarsitul operatorului -sa se returneze un pointer la void
parametru dummy
135
Sa presupunem ca am definit o clasa numita A, care este prototipul corect pentru constructourl de copiere si operatorul de atribuire? -A(const A* other),A& operator = (const A& other) -A(const A& other),void operator = (const A& other) -A(const A other),A& operator = (const A& other) -A(const A& other),A& operator = (const A& other)
A(const A& other),A& operator = (const A& other)
136
Care este rezultatul programului de mai jos? #include using namespace std; int a = 1, b = 3, c =3; static int st = 1; void f(); int main(void){ cout << "a = " << a << endl; cout << "b = " << b << endl; cout << "c = " << c << endl; f(); cout << "st = " << st << endl; cout << "a = " << a << endl; void f() { extern int a; a = 22; } }
1 2 3 1 22
137
Care este rezultatul programului de mai jos? #include using namespace std; class Baza { public: Baza() {cout << "Constructor: Baza" << endl;} virtual ~Baza() {cout << "Destructor: Baza" << endl;} }; class Derivata : public Baza { public: Derivata() {cout << "Constructor: Derivata" << endl;} ~Derivata() {cout << "Destructor: Derivata" << endl;} }; int main(void) { Baza* Var = new Derivata; delete Var; return 0; }
constructor baza constructor derivata destructor derivata destructor baza