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
Q

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 &laquo_space;(ostream &, complex &);
- friend istream operator &laquo_space;(istream &, complex &);
- friend ostream & operator &laquo_space;(ostream &, complex &);
- friend ostream & operator&raquo_space; (ostream &, complex &);

A

friend ostream &operator«(ostream &, complex &);

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

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.

A

asociere la “legarea tarzie “a obiectului cu tipul potrivit de date

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

Fie codul:
class A{
// declaratii
};
…….
A a, b(2), c(3,2);
cout &laquo_space;c= =(a+b) &laquo_space;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

&laquo_space;a operatorului de relatie (==), a operatorului de adunare(+);

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

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.

A
  1. daca exista o functie virtuala pura intr-o clasa , atunci clasa din care face parte devine abstracta
  2. metodele constante au acces la pointerul this
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

. Fie codul
#include<iostream.h>
#include<conio.h>
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<m.get_Nl();i++){
for (j=0;j<m.get_Nc();j++){
m[i][j]=i*10+j;
cout<<m[i][j]<<" ";
} cout<<"\n"; }
}
int main(void){
functie(3,3);getch();return 0;
}
Codul este:
- incorect sintactic pentru ca nu implementeaza constructor implicit si destructor in clasa L;
- incorect pentru cã nu suprascrie operatorul <<
- corect sintactic dar lasa memorie alocata (orfana);
- corect si fara eroare</conio.h></iostream.h>

A

corect sintactic dar lasa memorie alocata(orfana)

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

Fie declaratiile:
const int ci=10;
int *const cp=&ci;
care dintre urmatoarele operatii este permisa?
- ci=1;
- cp=&ci;
- *cp=ci ;
- cp=ci ;

A

*cp=ci;

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

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);

A

sw(&i,&j):

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

. Fie codul:
#include<iostream.h>
int a=1;
void f()
{
int b=1;
static int c=a;
cout<<"a="<<a++ <<"b="<<b++ << "c="<<c++<<'\n';
c=c+2;
}
int main()
{
while(a<4) f() ;
}
Efectul executiei codului de mai sus este:
- a=1 b=1 c=1 a=2 b=2 c=2 a=3 b=3 c=3
- a=1 b=1 c=1 a=2 b=1 c=4 a=3 b=1 c=7
- a=2 b=2 c=2 a=3 b=2 c=3 a=4 b=2 c=4
- a=2 b=2 c=2 a=3 b=3 c=4 a=4 b=4 c=6</iostream.h>

A

a=1,b=1,c=1
a=2,b=1,c=4
a=3,b=1,c=7
b ia valoarea 1 de fiecare data cand se apeleaza f()

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

Fie clasa:
class complex
{
double real;
double imag;
public:
complex()
{
real=0;
imag=0;
}
complex(double x,double y=1)
{
real=x;
imag=y;
}
};
Fie declaraţia :
complex z(0);
Efectul codului este :
- Se apeleaza constructorul cu parametri al clasei complex;
- Se apeleaza constructorul implicit al clasei complex;
- Codul nu se compileazã;
- Datele real si imag ale obiectului z se iniţializeaza cu 0

A

se apeleaza constructorul cu parametri ai clasei complex

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

Fie codul :
class tab
{
private:
int a[3] ;
public :
int& operator {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 componenta a vectorului nu poate aparea în stânga unei relaţii de atribuire;
- codul este sintactic corect si o componentã a vectorului poate apare în stânga unei relaţii de atribuire;
- codul este greşit deoarece nu s-a scris corect supradefinirea operatorului [].

A

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

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

fie codul:
class A{
public:
….
void print(ostream &out) const;

};
care este efectul adaugarii cuvantului cheie const la sfarsitul fucntiei print?
- codul este greşit deoarece nu s-a declarat corect funcţia print;
- funcţia nu poate modifica parametrul formal out;
- funcţia nu poate modifica obiectul pentru care este apelatã;
- codul este incorect pentru cã nu suprascrie operatorul «.

A

functia nu poate modifica obiectul pentru ca este apelata

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

care dintre afirmatiile de mai jos NU este adevarata?
- Functiile virtuale sunt functii membru nestatice;
- Constructorii pot fi functii virtuale;
- Destructorii pot fi functii virtuale;
- Funcţiile friend pot fi funcţii virtuale

A

constructorii pot fi functii virtuale

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

. Fie clasa:
class X{
public:
X() {t=0;};
X(X const &);
virtual void f(int)=0;
protected:
int t;
};
şi codul:
X obj;
Care din urmãtoarele afirmaţii despre codul de mai sus este adevarata:
- Se apeleaza constructorul implicit al clasei X ;
- Nu se poate construi obiectul obj deoarece clasa X este o clasa abstractã ;
- Data t a obiectului obj ramâne neiniţializatã deoarece t este membru protected
- Se apeleazã constructorul de copiere al clasei X şi prin urmare se construieşte obiectul obj.

A

nu se poate construi obiectul obj deoarece clasa X este abstracta
(nu se pot crea obiecte din ea; exista doar pentru a crea baza ierarhiei de clase)

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

Fie clasa :
class Clasa
{
int a;
double x;
public :
Clasa();
Clasa(int,double);
};
Fie codul :
Clasa Obj;
Clasa *PtrObj ;
PtrObj=new Clasa[10] ;
Care este varianta corectã pentru a elibera zona de memorie alocata pentru vectorul de obiecte al clasei
Clasa :
- delete PtrObj ;
- PtrObj=NULL ;
- Datoritã faptului ca nu exista destructor declarat explicit, nu se poate elibera zona de memorie specificata.
- delete [] PtrObj ;

A

delete[] PtrObj;

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

. Fie clasa complex declaratã mai jos:
class complex {
int x, y ;
public:
//aici se introduce prototipul operatorului de extracţie
complex (int n=0, int m=0);
};
Suprascrierea operatorului de extracţie (intrare) se face corect :
- friend ostream & operator &laquo_space;(ostream &, complex &);
- friend istream & operator&raquo_space; (istream &, complex &);
- friend ostream operator&raquo_space; (ostream &, complex &);
- friend istream & operator &laquo_space;(istream &, complex &);

A

friend istream &operator»(istream &, complex &);

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

care este diferenta dintre modul de supraincarcare a unui operator binar ca functie membru sau ca functie friend a unei clase?
- Cele douã modalitãţi sunt identice;
- Nu se poate defini un operator ca funcţie membru;
- Nu se poate defini un operator ca funcţie friend;
- Funcţia membru are un parametru în timp ce funcţia friend are doi parametri.

A

functia membru are un parametru in timp ce functia friend are doi parametri?

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

fie o clasa de baza B si clasa de derivate D private din B. Cum se mostenesc membri publici ai clasei B in clasa D:
- public
- protected;
- sunt inaccesibili;
- private.

A

se mostenesc private
pentru ca d deriva private din b

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

analizati enuntul de mai jos si decideti:
“unei functii oarecare ce asteapta ca argument un obiect de tip clasa de baza B, sau pointer catre B sau referinta catre B i se poate transmite ca parametru efectiv si respectiv si un obict de tip clasa D , derivata din clasa B, pointer catre D sau referinta catre d”
- Afirmaţia este corectã.
- Afirmaţia este incorectã pentru cã nu este valabilã pentru tipul referinţã cãtre D
- Afirmaţia este incorectã pentru cã nu este valabilã pentru tipul pointer cãtre D
- Afirmaţia este complet eronatã.

A

afirmatia este corecta

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

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

A

-Declaraţia pentru S2 nu este corectã deoarece în acest caz este necesarã definiţia
unui constructor de copiere.

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

Fie codul de mai jos:
int sqrt (int &m)
{
return (mm);
}
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ã.”

A
  • codul este greşit; este incorectã supraîncãrcarea funcţiei sqrt ;
    : ar trebui sa difere tipul param sau nr param
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
45
Q

. 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

A

-nu returneazã nici un tip.

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

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.

A

-instrucţiunea specificã valoarea implicitã 0 pentru parametrul funcţiei pur virtuala.
virtual tip nume fct (lista parametric ) =0 – declararea fct pur virtuala

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

. 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ã.

A

-Afirmaţia este corectã ;

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

Fie codul :
#include <iostream.h>
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</iostream.h>

A

-Constr. baza Constr. deriv Distr. deriv Distr. Baza

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

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.

A

funcţiile friend au acces la pointerul this

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

. #include <conio.h>
#include <iostream.h>
class Baza{
protected:
int Param;
public:
Baza():Param(0) {
cout<<"Constructor implicit Baza!"<<endl;};
virtual ~Baza() {
cout<<"Destructor Baza!"<<endl;};
virtual void Identificare() {
cout<<"Clasa Baza!"<<endl;};
};
class Deriv1: public Baza{
public:
Deriv1() {cout<<"Constructor implicit Deriv1!"<<endl;};
Deriv1(Deriv1 const & Obj) {Param=Obj.Param; cout<<"Constructor de copiere Deriv1!"<<endl;};
~Deriv1() {cout<<"Destructor Deriv1!"<<endl;};
friend istream &operator >> (istream &In, Deriv1 &Obj)
{cout<<"Valoare pentru Param din clasa Deriv1: ";In>>Obj.Param; return In;};
void Identificare() {cout<<"Clasa Deriv1!"<<endl;};
};
class Deriv2: public Baza{
public:
Deriv2() {cout<<"Constructor implicit Deriv2!"<<endl;};
Deriv2(Deriv2 const & Obj) {Param=Obj.Param; cout<<"Constructor de copiere Deriv2!"<<endl;};
~Deriv2() {cout<<"Destructor Deriv2!"<<endl;};
friend istream &operator >> (istream &In, Deriv2 &Obj)
{cout<<"Valoare pentru Param din clasa Deriv2: ";In>>Obj.Param; return In;};
void Identificare() {cout<<"Clasa Deriv2!"<<endl;};
};
int main(int argc, char* argv[])
{
Deriv1 Obj1; Deriv2 Obj2;
cin>>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</iostream.h></conio.h>

A

Construcţia nu ilustreazã polimorfismul

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

. 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);)

A

-friend int Calcul(Baza, int); /*

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

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”«endl;};
-Deriv() {Param=5;};

A

Deriv(Deriv const & Obj):Param(Obj.Param) {};
Baza nu are cnstructor copiere explicit; param nu este membru static sau clasa de baza pentru Deriv.

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

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; };

A

-friend Clasa operator +(Clasa &Obj1, Clasa &Obj2)
{ Valoare=Obj1.Valoare+Obj2.Valoare;
return *this; };

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

. Fie o clasã cu numele Clasa, de forma:
#include <iostream.h>
class Clasa
{
int Valoare;
public:
Clasa(void):Valoare(0) {cout<<"Constructor implicit, Clasa!"<<endl;};
Clasa(Clasa const& Obj):Valoare(Obj.Valoare) {cout<<"Constructor de copiere, Clasa!"<<endl;};
Clasa(int const x):Valoare(x) {cout<<"Constructor cu parametri, Clasa!"<<endl;};
~Clasa() {cout<<"Destructor, Clasa!"<<endl;};
friend Clasa operator +(Clasa &Obj1, Clasa &Obj2)
{
Clasa Rezultat;
Rezultat=Obj1.Valoare+Obj2.Valoare;
return Rezultat; };
};
int main(void)
{
Clasa CL1(4),CL2(6),CL3;
CL3=CL1+CL2;
return 0;
}
În urma rulãrii programului, s-a apelat constructorul implicit de CI ori, constructorul de copiere de CC
ori, constructorul cu parametri de CP ori, iar destructorul de D ori. Sã se aleagã varianta corectã.
-CI=2, CC=1, CP=2, D=5
-CI=2, CC=0, CP=2, D=4
-CI=2, CC=1, CP=3, D=6
-CI=2, CC=1, CP=2, D=4 ,</iostream.h>

A

-CI=2, CC=1, CP=3, D=6

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

include<iostream.h></iostream.h>

#include<conio.h>
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<m.get_Nl();i++){
for (j=0;j<m.get_Nc();j++){
m[i][j]=i*10+j; cout<<m[i][j]<<" ";} cout<<"\n";}
}
int main(void){
functie(3,3); getch(); return 0;
}
Efectul executiei programului de mai sus este:
-10 11 12 20 21 22 30 31 32
-0 1 2 10 11 12 100 101 102
-0 1 2 10 11 12 20 21 22
-0 10 20 1 11 21 2 12 22</conio.h>

A

-0 1 2 10 11 12 20 21 22

56
Q

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[].

A

-dezaloca memoria obtinuta atunci cand o variabila sau un obiect sunt create folosind
operatorul new.

57
Q

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()

A

-p->f();

58
Q

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

A

-este diferit in diferite versiuni ale aceleiasi functii membru care este invocata de obiecte diferite.

59
Q

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

A

d. aceste continua sa se comporte ca un obiect din clasa derivata daca se apeleaza functii virtuale

60
Q

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

A

-destructorii claselor derivate nu pot fi apelati atunci cand obiectul este accesat printr-un pointer la clasa de
baza

61
Q

. 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)

A

-se bazeaza pe proprietatea unui obiect de a-si cunoaste propriile functii membru

62
Q

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

A

-tipul valorii returnate de functie trebuie sa fie aceeasi clasa ca si obiectul care a invocat functia

63
Q

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

A

-ea nu poate modifica valoarea variabilei a carei adresa este in arg1

64
Q

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.

A

-nu va exista return din constructorul de copiere

65
Q

. 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);

A

-void afunc(char ch, float fpn, int intvar=77);

66
Q

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

A

aduna un obiect la obiectul pentru care operatorul a fost apelat

67
Q

. 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

A

-poate apela o functie membru publica din clasa de baza

68
Q

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

A

-(1) F (2)A (3)A (4)F (5)A

69
Q

Alegeţi rezultatul execuţiei codului urmãtor:
#include <iostream.h>
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;</iostream.h>

A

-D::m1 D::m2 D::m1 B::m2

70
Q

Ce se va afişa în urma execuţiei programului:
#include <iostream .h>
void func(char *a, int b=3, char *c=”Salut! “)
{
cout«a«“spune “;
while(b–)cout«c«” “;
cout«endl;
}
void main()
{
func( “Mihai “ );func( “Elena “,2 );
func( “Alice “ , 4 , “Buna! “ );
}
-Mihai spune Salut! Salut! Salut! Elena spune Salut! Salut! Alice spune Buna! Buna! Buna! Buna!
-Mihai Elena spune Salut! Salut! Alice spune Buna! Buna! Buna! Buna!
-Mihai spune Salut! Salut! Salut! Elena spune spune Salut! Alice spune Buna! Buna! Buna! Buna!
-Eroare la compilare deoarece funcţia func() nu este apelatã corect.

A

-Mihai spune Salut! Salut! Salut! Elena spune Salut! Salut! Alice spune Buna! Buna! Buna! Buna!

71
Q

Se considerã programul:
#include<iostream.h>
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</iostream.h>

A

din cauza instrucţiunii Obj.x=15;

72
Q

2.Se dã codul:
#include <iostream.h>
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.</iostream.h>

A

Operatorul de atribuire nu poate fi supraîncãrcat ca funcţie friend.

73
Q

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?

A

-F E C B A

74
Q

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

A

Membrii publici ai clasei B devin membri publici ai clasei A

75
Q

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

-A[3]->f()

76
Q

Care este rezultatul executiei codului de mai jos:
int a=9;b=4;
float c=a/b;
cout«c;
-2.25;
-2
-Eroare de executie.
A: floate c= (float)(a/b)-> c=2.5

A

-2

77
Q

. 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

-a=6 b=7 c=12;
A: visual vede a++ + b , iar in adunare a este 5 apoi se face incrementarea

78
Q

Care este rezultatul executiei codului de mai jos:
for(;;);
{
static int i=6;
i++;
}
-da eroare de compilare;
-nimic;
-bucleaza la infinit
-i=7D

A

daca avem ; dupa for nu afiseaza nimic, daca stergem ; e bucla infinita
-nimic;

79
Q

. Este corect codul de mai jos?
const int i=9;
int& r=i;
-dependent de compilator;
-Da;
-Nu.

A

-Nu.
A: Deoarece converteste int la int&

80
Q

. 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.

A

-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
Q

. 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

A

posibila eroare de executie;
A: se inchide consola

82
Q

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

A

char a=new char(20) / trebuie sa avem valoare */
char a=new char[20] / pt dimensiunea vectorului */

83
Q

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

A

-Adevarat;

84
Q

. Ce caracter termina orice sir de caractere?
- ‘0’
- ‘\0’
- . (punct)
- nici unul de mai sus.

A
  • ‘\0’
85
Q

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)

A

class Clasa: public Super /* class D: [conf_acces] B()[modificare] B */

86
Q

Care este rezultatul executiei codului de mai jos:
static int j;
void main(void)
{
for (int i=10;i>0;i–)
j+=i;
cout«j;
}
-Valoare neprecizata;
-0
-Apare eroare de compilare.
-55

A

-Apare eroare de compilare.
Da eroare de compilare deoarece compilatorul doreste int, daca era int atunci raspunsul era 55.

87
Q

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

A

-#define MAX(a,b) (a)>(b)?(a:b)

88
Q

Care este diferenta dintre
1. #include <clasa.h>
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</clasa.h>

A

-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
Q

. Cum se dezaloca memoria alocata cu :
char * a= new char[20];
-delete a;
-delete *a;a=NULL;
-delete []a, a= NULL;
-free(a);232323

A

-delete []a, a= NULL;

90
Q

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.

A
  • (*ptr).mem_fun(x);
91
Q

. Care este modul de acces implicit la datele membru ale unei clase?
-Public;
-Protected;
-Private;
-nu se defineste.

A

-Private;
A: poate specifica proprie conceptului - > asigura implementarea clasei

92
Q

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 */

A

-value =5./* nu avem nici un case 25, deci ramane valuarea initiala */

93
Q

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

A

-Codul este corect : se implementeaza 3 variante de constructori

94
Q

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

A

Codul este gresit, da eroare de compilare; /* constructor de copiere*/

95
Q

. 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

A

-Codul este gresit, da eroare de compilare;

96
Q

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.

A

-value =30; /* daca aveam break la case 2 aveam 25 “sare” din switch */

97
Q

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

A

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
Q

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

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
Q

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

A

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
Q

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. A& operator- -()
A: deoarece in varianta postfixata e A operator - - (int)

101
Q

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

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
Q

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?

A

aSpecialPerson.Person:: doSomething();

103
Q

Se da declaratia:
class A: public class B {…};
In ce ordine se apeleaza constructorii l declaratiea unui obiect din clasa A?

A

Constructorul clasei A primul, apoi cel al clasei B

104
Q

Ce metoda nu va genera implicit compilatorul, daca programul omite definirea acestora?

A

R: Metoda ce supraincarca operatorul de egalitate (==)

105
Q

Cum se declara o metoda ce poate opera inclusiv asupra obiectelor declarate constante?

A

const int myMethod (const int var);
int myMethod(const int var);

106
Q

Friend clasa operator + (clasa &e1, clasa&e2)
{ valoare=e1.valoare+ e2.valoare ;
Return *this;
}

A

Op. Supraincarcarea

107
Q

Cum se numeste instructiunea care reda constrolul functiei apelante?

A

return

108
Q

Ce instructiune implementeaza ciclul cu test final?

A

do-while

109
Q

Fie codul:
#include <iostream>
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</iostream>

A

Parinte Copil Copil Parinte

110
Q

Fie codul:
#include <iostream>
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</iostream>

A

-3 (nu sunt sigura, dupa rulare a afisat si 2 si 3)

111
Q

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;

A

-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
Q

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)

A

-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
Q

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.

A

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
Q

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

A

valorile variabilelor x.a si x.b sunt necunoscute, depind de system (nu sunt sigura)

115
Q

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

A

-clasa D2 nu poate defini functia Functie
A: Clasa D2 este derivata din clasa D1.

116
Q

Fie codul:
Class Base {
Public:
Base(); //constructor implicit al clasei de baza
~Base(); //destructor al clasei de baza
Void showName() {
Cout&laquo_space;“Hi! I’m Base!\n”;}
};
Class Derived : public Base {
Public:
Derived(); //costructorul implicit al clasei derivate
~Derived(); //destructorul clasei derivate
Void showName() {
Cout&laquo_space;“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.

A

-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
Q

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

A

C. 0

118
Q

Care este functia pe care majoritatea
programelor C trebuie sa o contina?
A. start()
B. system()
C. main()
D. program()

A

C. main()

119
Q

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

A. { si }

120
Q

Ce semn de punctuatie este folosit la sfarsitul
majoritatii liniilor de comanda in C ?
A. .
B. ;
C. :
D. `

A

B. ;

121
Q

Care din urmatoarele variante este un coment
corect ?
A. */ Comments */
B. ** Comment **
C. / * Comment */
D. { Comment }

A

C. /* Comment */

122
Q

Care din urmatoarele variante nu este un tip
de variabila corecta ?
A. float
B. real
C. int
D. double

A

B. real

123
Q

Care din urmatoarele variante este un
operator pentru compararea a doua variabile ?
A. :=
B. =
C. equal
D. ==

A

D. ==

124
Q

Ce metode nu va genera implicit compilatorul daca programatorul omite definirea acestora?

A

Metoda de supraincarcare a operatorului egalitate (==)

125
Q

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

A
  • 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
Q

!!!!!!!!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

A

-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
Q

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

A
  • 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
Q

Care este rezultatul executiei programului de mai jos?
#include<iostream>
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;
}</iostream>

-15
-0
-5
-10

A

5

129
Q

Care este rezultatul executiei programului de mai jos?
#include <iostream>
using namespace std;
template <class> void f(T& i) {std::cout << 1;}
template <> void f(const int& i) {std::cout << 2;}</class></iostream>

int main(){
int i = 42;
f(i);
return 0;
}

-2
-0
-42
-1

A

1

130
Q

include <iostream></iostream>

Care este rezultatul executiei programului de mai jos?

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 &laquo_space;(&obj)->x &laquo_space;” “;
cout &laquo_space;((a*)&obj)->x;
}

-13 11
-10 11
-11 13
-11 10

A

13-11

131
Q

Cate erori de compilar are programul de mai jos?
#include <iostream>
using namespace std;</iostream>

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;
}

A

2

132
Q

Care este rezultatul executiei programului de mai jos?
#include <iostream>
using namespace std;</iostream>

class Baza
{
public:
void F_1() {cout &laquo_space;“Baza F-1\n”;}
virtual void F_2() {cout &laquo_space;“Baza F-2\n”;}
virtual void F_3() {cout &laquo_space;“Baza F-3\n”;}
virtual void F_4() {cout &laquo_space;“Baza F-4\n”;}
};
class Derivata: public Baza
{
public:
void F_1() {cout &laquo_space;“Derivata F-1\n”;}
void F_2() {cout &laquo_space;“Derivata F-2\n”;}
void F_4(int x) {cout &laquo_space;“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;
}

A

Baza F_1
Derivata F_2
Baza F_3
Baza F_4

133
Q

include <iostream></iostream>

Considerand codul de mai jos:

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);}

A

-Deriv(): Base(4) {}
-Deriv() {setD(4);}

134
Q

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

A

parametru dummy

135
Q

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

A(const A& other),A& operator = (const A& other)

136
Q

include <iostream></iostream>

Care este rezultatul programului de mai jos?

using namespace std;

int a = 1, b = 3, c =3;
static int st = 1;
void f();
int main(void){
cout &laquo_space;“a = “ &laquo_space;a &laquo_space;endl;
cout &laquo_space;“b = “ &laquo_space;b &laquo_space;endl;
cout &laquo_space;“c = “ &laquo_space;c &laquo_space;endl;
f();
cout &laquo_space;“st = “ &laquo_space;st &laquo_space;endl;
cout &laquo_space;“a = “ &laquo_space;a &laquo_space;endl;
void f() {
extern int a;
a = 22;
}
}

A

1
2
3
1
22

137
Q

include <iostream></iostream>

Care este rezultatul programului de mai jos?

using namespace std;

class Baza {
public:
Baza() {cout &laquo_space;“Constructor: Baza” &laquo_space;endl;}
virtual ~Baza() {cout &laquo_space;“Destructor: Baza” &laquo_space;endl;}
};
class Derivata : public Baza {
public:
Derivata() {cout &laquo_space;“Constructor: Derivata” &laquo_space;endl;}
~Derivata() {cout &laquo_space;“Destructor: Derivata” &laquo_space;endl;}
};
int main(void)
{
Baza* Var = new Derivata;
delete Var;
return 0;
}

A

constructor baza
constructor derivata
destructor derivata
destructor baza